源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

IOS property属性详细介绍使用注意事项

  • 时间:2022-06-18 13:43 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:IOS property属性详细介绍使用注意事项
[b]IOS property属性[/b] [b]原子性[/b] [list] [*]atomic[/*] [*]nonatomic [/*] [/list] [b]访问权限[/b] [list] [*]readWrite[/*] [*]readOnly [/*] [/list] [b]内存管理[/b] [list] [*]strong[/*] [*]retain[/*] [*]copy[/*] [*]assign[/*] [*]weak[/*] [*]unsafe_unretained [/*] [/list] [b]方法命名[/b] [list] [*]getter = <name>[/*] [*]setter = <name> [/*] [/list] [b]结论[/b] 1、原子性      (1)atomic                原子性,可以理解成就是生成getter、setter方法时,编译器会自动为程序添加同步锁,减少因为在不同的线程中同时对同一个内存地址进行读写操作,而产生的二意性、数据混乱的情况。                但同步锁也不能一定保证能完全阻止同时读写的情况发生,而且同步锁会耗费较多资源,降低程序的效率,因此不建议使用,但atomic是默认的特性。      (2)nonatomic                非原子性,也就是不添加同步锁,读写效率会高,但需要开发人员注意同时读写的情况,可以使用gcd的栏栅和同步方法来保证。 [b]2、访问权限[/b]      (1)readWrite                生成getter、setter方法,并生成实例变量指针,但对于静态库类是无法修改的,所以即使能进入头文件也无法修改。      (2)readOnly                只生成getter方法,可以用于数据保护,在interface中把属性声明了readOnly,在continue-class中再把属性声明为readWrite,就能实现私有属性的效果,从而有更好的封装特性,但其实通过KVC                依然可以从外部修改属性,但不建议这样使用。 [b]3、内存管理[/b]      (1)strong:strong是推出ARC自动计数后后添加的属性,效果与retain基本一致,都是在setter方法中,对旧数值release,对新数值retain。      (2)retain与strong基本一致      (3)assign:简单赋值操作,通常针对普通类型,既不release,也不retain      (4)copy:能更好实现上下文环境保护。对旧值release,对新值进行copy操作,immutable+copy = 不可变浅复制,mutable+copy = 不可变深复制。      (5)weak:weak特性,并不会持有对象,当指向对象的指针全撤销后,对象释放,指针置nil,这常用于block的保留环      (6)unsafe_unretained:不会持有对象,但引用对象,对象释放后,会产生野指针,主要用于兼容以前的方法。 [b]4、方法命名[/b]      (1)getter = <name>                 属性生成的默认getter方法名:属性名      (2)setter = <name>                属性生成的默认getter方法名:set+属性名 [b]5、结论[/b]      属性不是随便填写的,需要严格根据该属性在程序中的作用,再选择。 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部