我寫的代碼來恢復我的應用程序的狀態,但有一個在NSMutableArray的內存泄漏。我是Xcode的新手,所以我很抱歉,如果這是我忽略的一些微不足道的東西。任何幫助表示讚賞。 LQ內存泄漏叫做從應用程序委託
AppDelegate.m
- (void)applicationDidFinishLaunching:(UIApplication *)application {
[rootViewController restoreState];
}
RootViewController.h
@interface rootViewController : UIViewController {
NSMutableArray *offendingNSMutableArray;
}
@property (nonatomic, retain) NSMutableArray *offendingNSMutableArray;
RootViewController.m
@synthesize offendingNSMutableArray;
- (void)restoreState {
// Gets an array stored in the user defaults plist
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
self.offendingNSMutableArray = [[NSMutableArray alloc]
initWithArray:[userDefaults objectForKey:kArrayValue]];
}
- (void)viewDidUnload {
self.offendingNSMutableArray = nil;
}
- (void)dealloc {
[offendingNSMutableArray release];
}
首先,你的alloc-INIT與retainCount = 1,那麼你做setOffendingNSMutableArray: - > retainCount = 2。在viewDidUnload中,您將其設置爲nil,因此retainCount = 1,並且丟失了指向數組的指針。這是你的泄漏。 – beefon 2010-06-16 14:27:08
對不起,我是這個...我沒有分配初始化,並設置在與下面的代碼行同一行: self.offendingNSMutableArray = [[NSMutableArray alloc] initWithArray:[userDefaults objectForKey:kArrayValue] ]。 – 2010-06-16 14:51:52