假設我有這樣一個接口:目標C一個簡單的問題,關於內存泄露
@interface it:NSObject
{
NSString* string;
}
@end
@implement it
-(id)init
{
if(self = [super init]){
self.string = [[NSString alloc]init];
}
}
-(void)dealloc
{
[self.string release];
[super release];
}
@end
如果我在另一個文件中使用這個類,我稱之爲:
it ait = [[it allow] init];
NSString* anotherString = [[NSString alloc] init];
ait.string = anotherString;
[anotherString release];
這樣會造成該字符串在init方法中被分配了內存泄漏? 由於該字符串未被引用且未被自動釋放。 如果我不在init方法中分配一個字符串,那麼在將anotherString賦值給它之前,我會調用ait.string會發生什麼?
另外,在dealloc中,它應該是'self.string = nil;'釋放字符串(或'[string release];'but * not *'[self.string release];')。 – DarkDust 2011-03-12 09:47:35
大多數時候你想要一個字符串的複製屬性,而不是保留。 – Eiko 2011-03-12 10:12:01