成员set方法写法的细微差别(Object C)

成员set方法写法的细微差别(Object C)

大家都知道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 ;
}

看上去一样,可是第一种写法在一种情况下会导致程序崩溃。

你可能感兴趣的:(成员set方法写法的细微差别(Object C))