大家都知道Object使用屬性關鍵字來定義默認的set和get方法;但如果自己動手寫個set方法,卻不像C++,Java其他語言一樣簡單。歸根于其內存管理的特點。
請看這個代碼的區別:
-(void)setName:(NSStirng *)name
{
[_name release];
_name = [name retain];
}
另外一個寫法是:
-(void)setName:(NSStirng *)name
{
[name retain];
[_name release];
_name = name ;
}
看上去一樣,可是第一種寫法在一種情況下會導致程序崩潰。