Xcode Instruments声称下面的代码导致内存泄漏。据我了解,分配财产时,发生以下情况:
*旧值会被自动释放
*新的值会保留
*新的价值显然是
赋予它的头脑,怎么来的我内存泄漏,我该如何解决?iPhone NSMutableArray内存泄漏
“TestProjectViewController.h”:
#import <UIKit/UIKit.h>
@interface TestProjectViewController : UIViewController {
NSMutableArray* array;
}
@property (nonatomic, retain) NSMutableArray* array;
@end
“TestProjectViewController.m”:
#import "TestProjectViewController.h"
@implementation TestProjectViewController
@synthesize array;
- (void)applicationDidFinishLaunching:(UIApplication *)application {
for(int i = 0; i < 5; i++) {
self.array = [[NSMutableArray alloc] init];
[self.array addObject:@"Hello world #1"];
[self.array addObject:@"Hello world #2"];
}
}
当我需要手动释放阵列时,它是属性为“retain”的属性吗? – 2010-02-26 15:43:52
绝对是。你也可以通过调用'self.array = nil;' – kubi 2010-02-26 15:45:59
来释放数组,因为属性“retain”属性定义了相应setter方法的行为 - 你递增对象保留count,所以必须在那之后释放该对象。如果您更改属性值,则旧对象将自动释放。如果你销毁你的对象,你必须释放所有(以前保留的)其成员。如果需要,可以在dealloc方法中调用'self.array = nil'而不是显式释放 – Vladimir 2010-02-26 15:51:25