当我分析我的projetc时,Xcode分析器会发现分配对象的潜在泄漏 但麻烦的是我不知道这意味着什么,以及如何解决这个问题
这是我的文件的图片,
这是代码
#import "RoundRect.h"
//
// NewPathWithRoundRect
//
// Creates a CGPathRect with a round rect of the given radius.
//
CGPathRef NewPathWithRoundRect(CGRect rect, CGFloat cornerRadius)
{
//
// Create the boundary path
//
CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path, NULL,
rect.origin.x,
rect.origin.y + rect.size.height - cornerRadius);
// Top left corner
CGPathAddArcToPoint(path, NULL,
rect.origin.x,
rect.origin.y,
rect.origin.x + rect.size.width,
rect.origin.y,
cornerRadius);
// Top right corner
CGPathAddArcToPoint(path, NULL,
rect.origin.x + rect.size.width,
rect.origin.y,
rect.origin.x + rect.size.width,
rect.origin.y + rect.size.height,
cornerRadius);
// Bottom right corner
CGPathAddArcToPoint(path, NULL,
rect.origin.x + rect.size.width,
rect.origin.y + rect.size.height,
rect.origin.x,
rect.origin.y + rect.size.height,
cornerRadius);
// Bottom left corner
CGPathAddArcToPoint(path, NULL,
rect.origin.x,
rect.origin.y + rect.size.height,
rect.origin.x,
rect.origin.y,
cornerRadius);
// Close the path at the rounded rect
CGPathCloseSubpath(path);
return path;
}
感谢您提供非常有用的帮助。
PS:我的所有projet在iphone模拟器中都能正常工作 它是一个应用程序,有一个标签栏和4个部分,两个部分是空的, 另外两个部分是带有详细视图的tableview(从plist中选取数据) 当我在我的设备上测试应用程序时,两个空白部分完美地工作,并且两个tableview中的一个显示详细视图,第二个tableview女巫在模拟器中工作没有推动详细视图, 令我生气的是它今天早上工作正常
一个问题: 是一个限制它包含的数据的plist,我的意思是,如果有一个大的列表,例如500个字典项,这会不会很好地显示应用程序?
由于
答案 0 :(得分:3)
返回CF / CG分配时,该函数应以Create
为前缀。
即。重命名您的函数CreatePathWithRoundRect()
,分析器应该停止抱怨。
请注意,您不希望与CG / CF类型串联自动释放;也就是说,遵循包含返回对象类型的框架所延续的模式。因此,从该函数返回+1保留计数对象是有意义的。
答案 1 :(得分:0)
关于潜在的泄漏:
分析器似乎正在将您的NewPathWIth....
方法解释为便利构造函数;按惯例,这样的构造函数返回autorelease
个对象。所以我想你可以删除你应该做的分析器警告:
return [path autorelease];
对于你如何使用该返回值是否正常,我不知道......我的意思是:如果你像现在一样返回对象,你不需要被叫保留它;如果你将它自动释放,那么被调用者可能需要保留它,如果它需要的时间比当前执行方法更长。
关于plist问题,我认为plist没有限制。问题是你用它做什么。如果要创建一个包含500行的表视图,那就太多了,但由于表视图已针对单元格的管理方式进行了优化,因此应该没有问题。在任何情况下,都需要更多的信息(这可能是第二个询问S.O的问题。)