A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© nsswift 中级黑马   /  2015-6-9 20:11  /  903 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 nsswift 于 2015-6-12 17:04 编辑

1、每个OC对象都有一个“引用计数器”,(它占用四个字)节,OC对象刚创建后引用计数的初始值为1,当该值为0的时候,他就会被回收,并且回收前向对象发送dealloc消息,如果重写delloc方法一定要调用super dealloc而且这句调用要放最后。

2、每当alloc或者retain一个对象的时候一定要进行release调用,不然会出现内存泄露。当应用计数为0时在进行release调用就会出现野指针错误,所以当引用计数为0的时候最好要对对象赋值为nil(为空指针发送消息不会出现错误)。

3、Set方法管理的最严谨的写法
  1. - (void)SetCar:(Car *)car  
  2. {  
  3.     if(_car != car)  //判断是不是新传进来新对象  
  4.     {  
  5.         [_car release];  // 如果是,对旧对象进行一次release  
  6.         _car = [car retain];    // 对新对象进行retain,同时将新车变旧车  
  7.         
  8.     }  
  9. }  
复制代码

4、@property


@property (XXX) Car *car;

XXX=retain: release旧值,retain新值(适用于OC对象类型,跟第3条手动写法一样)

XXX=assign: 直接赋值(默认,适用于非OC对象类型比如基本数据类型int)

XXX=copy: release旧值,copy新值(NSString使用copy)。


XXX=readwrite:默认。同时生成setter和getter

XXX=readonly:只会生成getter的声明和实现。


2 个回复

倒序浏览
好的 学习了
回复 使用道具 举报
围观学习
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马