Я пытаюсь динамически рисовать кривые вдоль пути, пытаясь представить горы.SKShapeNode и CGPathRef EXC_BAD_ACCESS
У меня есть функция, которая возвращает CGPathRef
, который является указателем на структуру.
-(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.
Предлагаю вам опубликовать фактический код, который компилируется вместо «путь из другойФункции, развернутой». – 0x141E