@interface foo: NSObject
@property (nonatomic, retain) NSMutableArray *aMutableArray;
@end
@implementation
@synthesize aMutableArray
-(void)somefunction {
// Illustration
self.aMutableArray = [[[NSMutableArray alloc]init]autorelease];
self.aMutableArray = [[[NSMutableArray alloc]init]autorelease];
self.aMutableArray = [[[NSMutableArray alloc]init]autorelease];
}
@end
我已經做了類似的代碼代碼,這在我的程序的其他部分,但我需要的是一定的,這不會導致內存泄漏。隨着我對autorelease
的理解,這個對象被正確釋放了嗎?我泄漏這個ObjectiveC對象嗎?
[編輯 - 添加問題]雖然 一個問題:上面的酒店有保留屬性,所以當編譯器創建setter函數,二傳手代碼會是這個樣子:
somecode..
retain newObj
release oldObj
somecode..
在上面的代碼中,我將3個對象分配給了一個MutableArray。 每個它們分配時間,setter函數做了在newObj保留並在oldObj一個釋放。所以,由於setter方法已經發布了,autorelease在第二次釋放對象時會出現問題嗎?
是。但是你有一個錯字:缺少括號[在NSMutableArray中的前 – LuckyLuke 2011-12-18 17:48:00
感謝..編輯 – 2011-12-18 17:55:45
我已經編輯了以上問題,包括後續的問題,我有你的答案。謝謝 – 2011-12-18 18:26:53