问题描述
|
我在代码的一部分中调用了返回ѭ0的方法,如下所示:
+(NSMutableArray *)method {
NSMutableArray *rgb = [[NSMutableArray alloc] initWithObjects:.....,nil];
return rgb;
}
每次调用都会给我泄漏。将[rgb release];
放在return
之后似乎无效。将其放在return
之前会使我的应用崩溃。加上5英镑会使我的应用崩溃。有什么建议吗?
解决方法
+(NSMutableArray *)method {
NSMutableArray *rgb = [[NSMutableArray alloc] initWithObjects:.....,nil];
return [rgb autorelease];
}
或者:
+(NSMutableArray *)method {
NSMutableArray *rgb = [NSMutableArray arrayWithObjects:.....,nil];
return rgb;
}
如果仍然崩溃,则问题很可能出在该方法之外,而不是内部。
,
但这每次都会给我泄漏
它被称为。放入[rgb版本];
退货后似乎无法正常工作。
把它放在退货之前让我的应用程序
崩溃。同时放入自动发行
使我的应用崩溃。有什么建议吗?
您需要阅读《可可记忆管理指南》。很清楚,这样的方法必须自动释放返回的对象:
+(NSMutableArray *)method {
NSMutableArray *rgb = [[NSMutableArray alloc] initWithObjects:.....,nil];
return [rgb autorelease];
}
或者,或者:
+(NSMutableArray *)method {
NSMutableArray *rgb = [NSMutableArray arrayWithObjects:.....,nil];
return rgb;
}
过度保留(如您的代码中一样)不会导致崩溃(至少直到内存用完为止)。如果发生崩溃,则很可能是因为您以其他方式管理内存不足。
尝试使用“构建和分析”并修复它确定的所有问题。如果仍然崩溃,如果无法找出原因,请发布崩溃的回溯信息。