oc内存管理代码规范和property于对象变量的用法

1.只要调用了alloc ,必须有release (autorelease)

2.set方法的代码规范:

  基本类型:

    

- (void)setAge:(int)age
{
        _age = age;
}

  oc对象类型:

- (void)setCar:(Car *)car
{
       if(_car != car)  //判断是不是新对象
     {
         //如果是新对象,就对旧对象-1,因为person对象销毁时(dealloc)会让car对象-1,旧对象没有机会了,所以在这里-1
            [_car release];     
            _car = [car retain];    // 对新对象 +1
       }
}

    在h文件中写   property(retain)Car *car; 等效于上面的代码 

3.dealloc 方法的代码规范 (对象销毁前调用的方法)(重写时)

   ~一定要[super dealloc],并且放到最后面

   ~对self 所拥有的其他对象做一次release (比如上面的person拥有的car)

-(void)dealloc
{
       [_car release];
       [super dealloc];
}

 

  NSString  *s  = "hello";   字符串对象不用release 因为他自己会自动release

错误:

  person *p = [[Car alloc]init];   不能这么写 ,因为有了alloc不能release

property 中set方法内存管理的相关参数:

retain : release旧值 ,retain新值 (用于oc对象类型)   @property (retain) Car *car;

assign: 直接赋值(默认,适用于非oc对象类型)    @property (assign) int age    //默认的

copy : release 旧值,copy新值        

----是否要生成set方法:(只读)

readonly  : 只会生成getter的声明、实现

readwrite  :同时生成setter和getter的声明和实现

----多线程管理

nonatomic : 性能高

atomic : 性能低(默认)

----setter和getter方法的名称      (getter =abc ,setter  = setAbc:)

 

posted on 2014-06-06 23:09  iyon  阅读(186)  评论(0编辑  收藏  举报

导航