ios内存管理

刚开始学的时候没有真正理解,现在突然想写点东西了

以前写代码都是依葫芦画瓢,别人写什么样子自己就照着写,比如说

@interface Counter : A{

  NSString *a;

@property (nonatomic, retain) Nsstring*a;
@end

然后不管程序中用没用到 我都会在

-(void)delloc{

  [a release];

  [super delloc];

}

其实现在看来是有问题的,因为在写property (nonatomic, retain) NSArry*a后系统没默认帮做上这个操作

 -(void)setObjA:(NSString *)aa

{

           If(a!= aa)

{

   [a release];

    a=  aa;

   [a retain];  //对象的retain count 加1

}

}

明显的,在retain的setter中,变量retain了一次,那么,所以在程序中使用

      self.a =  aa;

只写了这么一句,a 仍然需要release,才能保证对象的retain count 是正确的。但是如果你的代码

      a =  aa;

只写了这么一句,那么这里只是进行了一次浅复制,对象的retain count 并没有增加,因此这样写的话,你不需要在后面release a 。

posted @ 2013-06-23 15:48  小乐"  阅读(224)  评论(0编辑  收藏  举报