Я пытаюсь динамически рисовать кривые вдоль пути, пытаясь изобразить горы.
У меня есть функция, которая возвращает CGPathRef
, который является указателем C на структуру.
-(CGPathRef)newPath
{
CGMutablePathRef mutablePath = CGPathCreateMutable();
//inserting quad curves, etc
return mutablePath;
}
Затем я передаю эти CGPathRefs
, заворачивая их в UIBezierPath
.
-(NSArray*)otherFunction
{
CGPathRef ref = [self newPath];
UIBezierPath *path = [UIBezierPath bezierPathWithCGPath: ref];
NSArray* paths = @[path];
CGPathRelease(ref);
return paths;
}
Затем я беру возвращенный массив путей и отображаю их на экране с помощью SKShapeNode
.
SKShapeNode *node = [SKShapeNode new];
NSArray* paths = [self otherFunction];
CGPathRef ref = [[paths firstObject] CGPath];
node.path = ref;
node.fillColor = [UIColor orangeColor];
node.lineWidth = 2;
И наконец.
[self addChild:node];
CGPathRelease(node.path);
После того, как я повторяю эту последовательность действий несколько раз, моя программа ломается и показывает мне.
UIApplicationMain с кодом EXC_BAD_ACCESS = 2.
Я так понимаю утечка памяти.
Мой вопрос в том, как мне справиться с выпуском CGPathRef
, когда я в конечном итоге передаю его через несколько функций и обертываю его в другом классе?
Я обновил код и теперь получаю ошибку EXC_I386_GPFLT.