Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone XCode分析器给出错误的“;“潜在内存泄漏”;问题_Iphone_Xcode_Memory Leaks - Fatal编程技术网

Iphone XCode分析器给出错误的“;“潜在内存泄漏”;问题

Iphone XCode分析器给出错误的“;“潜在内存泄漏”;问题,iphone,xcode,memory-leaks,Iphone,Xcode,Memory Leaks,我编写了如下函数来创建CGPath: +(CGPathRef)CGPathCreateRoundrect:(CGRect)rect radius:(CGFloat)radius { CGMutablePathRef path = CGPathCreateMutable(); ...... CGPathCloseSubpath(path); return path; } 分析器说第一行代码创建了一个可能泄漏的对象。但是我确实想在这个函数中创建一个新对象,并将所有权

我编写了如下函数来创建CGPath:

+(CGPathRef)CGPathCreateRoundrect:(CGRect)rect radius:(CGFloat)radius {
    CGMutablePathRef path = CGPathCreateMutable();
    ......
    CGPathCloseSubpath(path);
    return path;
}

分析器说第一行代码创建了一个可能泄漏的对象。但是我确实想在这个函数中创建一个新对象,并将所有权转移给调用方。函数名包含关键字“Create”。这是“Analyzer”的错误吗?

发生这种情况是因为根据编译器的理解,
+()
方法将始终返回自动释放的变量,这与您的情况不同。

Analyzer在这里工作正常。所有权仅通过名为
copy
init
或其某些变体的方法进行转移


返回的对象应该自动删除。

这是编译器的一条规则,即使您是在调用方方法中发布它(编译器不知道!!)@user1095341不,我不相信这是正确的。当涉及到Clang静态分析器遵守的命名约定时,类方法(
+
)与实例方法(
-
)没有任何区别。正如Williham指出的,分析器正在调用一个没有前缀“alloc”、“new”、“copy”或“mutableCopy”的方法,正如这里的指南所述:。作为一个类方法和一个实例方法在这里没有关系。也不要忘记
new
前缀。@BradLarson:为什么不呢?其他人都这样做了