AO.*_*AO. 1 iphone memory-leaks nsmutablearray
Xcode Instruments声称以下代码会导致内存泄漏.据我所知,在分配属性时会发生以下情况:
*旧值是自动释放的
*保留
新值*显然分配了新值
随着它的介意,我怎么会有内存泄漏,我该如何解决它?
"TestProjectViewController.h":
#import <UIKit/UIKit.h>
@interface TestProjectViewController : UIViewController {
NSMutableArray* array;
}
@property (nonatomic, retain) NSMutableArray* array;
@end
Run Code Online (Sandbox Code Playgroud)
"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"];
}
}
Run Code Online (Sandbox Code Playgroud)
self.array = [[NSMutableArray alloc] init];
Run Code Online (Sandbox Code Playgroud)
这里保留两个新的数组对象 - 分配它然后在setter方法中.以下之一应该解决这个问题:
self.array = [[[NSMutableArray alloc] init] autorelease];
// or
self.array = [NSMutableArray arrayWithCapacity:someNumber];
Run Code Online (Sandbox Code Playgroud)
并且不要忘记在dealloc方法中释放你的数组.