我编写了如下函数来创建CGPath:
+(CGPathRef)CGPathCreateRoundrect:(CGRect)rect radius:(CGFloat)radius {
CGMutablePathRef path = CGPathCreateMutable();
......
CGPathCloseSubpath(path);
return path;
}
分析器说第一行代码创建了一个可能泄露的对象。但我确实想在此功能中创建一个新对象并将所有权转移给调用者。函数名称包含关键字“Create”。这是“分析器”的错误吗?
答案 0 :(得分:3)
分析仪在此处正常运行。所有权仅通过名为copy
,init
的方法或其某些变体进行转移。
返回的对象应该是自动释放的。
答案 1 :(得分:-1)
这种情况正在发生,因为根据编译器的理解,+()
方法将始终返回自动释放的变量,而不是您的情况。