在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
涉及三大知识点:引用计数器,属性参数,自动释放池
一、引用计数器(程序编译时Xcode可以自动给你的代码添加内存释放代码,如果编写手动释放代码Xcode会报错) 1、关闭ARC(xcode 4.x之后新增的功能-自动引用计数) 2、引用计数器操作行为: 查看计数器值:retainCount 新增计数器值:alloc、retain、new、copy 自动释放:调用dealloc方法 二、属性参数 @property的参数分为三类,也就是说参数最多可以有三个,中间用逗号分隔,每类参数可以从上表三类参数中人选一个。如果不进行设置或者只设置其中一类参数,程序会使用三类中的各个默认参数,默认参数:(atomic,readwrite,assign) 一般情况下如果在多线程开发中一个属性可能会被两个及两个以上的线程同时访问,此时可以考虑atomic属性,否则建议使用nonatomic,不加锁,效率较高;readwirte方法会生成getter、setter两个方法,如果使用readonly则只生成getter方法;关于set方法处理需要特别说明,假设我们定义一个属性a,这里列出三种方式的生成代码: assign,用于基本数据类型 -(void)setA:(int)a{ _a=a; } retain,通常用于非字符串对象 -(void)setA:(Car *)a{ if(_a!=a){ [_a release]; _a=[a retain]; } } copy,通常用于字符串对象、block、NSArray、NSDictionary -(void)setA:(NSString *)a{ if(_a!=a){ [_a release]; _a=[a copy]; } }
三、自动释放池 对于自动内存释放简单总结一下: 1.autorelease方法不会改变对象的引用计数器,只是将这个对象放到自动释放池中;
|
请发表评论