如何解决我该如何释放从类方法返回的数组?
| 我在代码的一部分中调用了返回ѭ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;
}
过度保留(如您的代码中一样)不会导致崩溃(至少直到内存用完为止)。如果发生崩溃,则很可能是因为您以其他方式管理内存不足。
尝试使用“构建和分析”并修复它确定的所有问题。如果仍然崩溃,如果无法找出原因,请发布崩溃的回溯信息。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。