我正在将XCode 4.0.2用于iOS4项目。
我有这个构造对象的类方法。这是我从应用程序的开始到结束偶尔需要的常量。
但是,运行Analyze工具会给我一个c对象的“潜在的对象泄漏”警告。
我应该担心吗?我该如何解决?
谢谢
答案 0 :(得分:4)
您应该阅读Apple提供的Memory Management Programming Guide。
您应该在方法名称(此实例中为+[XYZ A]
)前加new
作为前缀,以明确方法的调用者知道他们负责释放他们收到的对象。您可以将方法重命名为+[XYZ newA]
。
如果您不想重命名方法,至少应该返回一个自动释放的对象,例如:将最后一行更改为return [c autorelease];
答案 1 :(得分:3)
每次使用该方法时,它都会通过(不推荐使用的)XYZ
方法创建+new
的新实例。
如果您希望类XYZ
的单个对象持续到应用程序的末尾,则需要进行一些更改。最简单的方法是在类初始化时创建此对象。在我们正在查看的任何类的.m文件中,添加以下内容:
static XYZ *instance = nil;
+ (void)initialize {
if (self != [ThisClass class])
return;
instance = [[XYZ alloc] init];
instance.X = ...;
instance.Y = ...;
instance.Z = ...;
}
然后,您的A
方法:
+ (XYZ *)A {
return instance;
}