我该如何释放从类方法返回的数组?

问题描述

| 我在代码的一部分中调用了返回ѭ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;
}
过度保留(如您的代码中一样)不会导致崩溃(至少直到内存用完为止)。如果发生崩溃,则很可能是因为您以其他方式管理内存不足。 尝试使用“构建和分析”并修复它确定的所有问题。如果仍然崩溃,如果无法找出原因,请发布崩溃的回溯信息。