[英]Memory management issue with retain
當您擁有保留在接口中的屬性並在代碼中的某個位置分配時,是否需要在代碼中釋放它以及在dealloc方法中釋放它,即保留計數為2?
從界面:
NSMutableData *xmlData;
@property (nonatomic, retain) NSMutableData *xmlData;
從實現:
@synthesize xmlData;
- (void)dealloc
{
[xmlData release];
[super dealloc];
}
xmlData = [[NSMutableData alloc] init];
您需要在dealloc中release
它。
如果在設置時需要retain
它,則取決於您如何做。
如果直接執行此操作,則需要保留它:
xmlData = [[NSMutableData alloc] init];
如果使用setter,它將自動完成,因此需要釋放它(如果未自動釋放):
NSMutableData *data = [[NSMutableData alloc] init];
self.xmlData = data;
[data release];
不知道,但我知道如何找出答案,如果您通過XCode Profiler運行並選擇“分配”,它將列出每個對象的計數。
在您的示例中,您只需要在-(void)dealloc;中釋放ivar;
我的做法是僅通過Accessor / Mutator(獲取器/設置器)訪問ivars,因此,當我分配和初始化ivar時,請執行以下操作。
NSMutableData *lXMLData = [[NSMutableData alloc] init];
self.xmlData = lXMLData;
[lXMLData release];
我發現它可以使一切井井有條,平衡
我也看過
self.xmlData = [[[NSMutableData alloc] init] autorelease]
;
(但我不是粉絲)
我的方法...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.