【发布时间】:2016-01-11 13:51:51
【问题描述】:
我正在尝试沿路径动态绘制曲线以表示山脉。
我有一个返回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);
在我重复这个动作序列几次后,我的程序中断并显示给我。
带有 EXC_BAD_ACCESS 代码的 UIApplicationMain = 2。
我知道存在内存泄漏。
我的问题是,当我最终将 CGPathRef 传递给几个函数并将其包装在另一个类中时,我该如何处理?
我更新了代码,现在收到 EXC_I386_GPFLT 错误。
【问题讨论】:
-
我建议您发布实际编译的代码,而不是“从 otherFunction 展开的路径”。
标签: ios objective-c sprite-kit skshapenode cgpathref