在我閱讀過的大多數教程中都有自定義init方法的示例。發佈可能尚未創建的對象
例如
@implementation MyPerson
-(id) initWithDefaultName {
self = [super init];
if (self) {
NSString *name = [[NSString alloc] initWithString:@"John Doe"];
}
return self;
}
現在,我知道,我應該與
-(void) dealloc
{
[name release];
[super dealloc];
}
配對這件事我不明白不過,就是這也不會,如果我崩潰打電話[MyPerson init]
其次[MyPerson release]
編輯:讀下面的評論,我意識到上面的示例代碼是不完全正確的。我得到的是我的自定義initWithName
方法分配並初始化一個對象,如果標準的init
方法被調用將不會存在。因此,我的dealloc
方法包含釋放它的代碼,但即使名稱對象從未創建過,它仍然有效?
關於該編輯:'name'會** **不能在被釋放'dealloc'因爲你分配給一個局部變量,而不是'name'實例變量。 init方法中的這個語句應該只讀取'name = [[NSString alloc] initWithString:@「John Doe」];'以獲得您想要的效果。 – PeyloW