时间:2021-05-20
IOS property属性
原子性
访问权限
内存管理
方法命名
结论
1、原子性
(1)atomic
原子性,可以理解成就是生成getter、setter方法时,编译器会自动为程序添加同步锁,减少因为在不同的线程中同时对同一个内存地址进行读写操作,而产生的二意性、数据混乱的情况。
但同步锁也不能一定保证能完全阻止同时读写的情况发生,而且同步锁会耗费较多资源,降低程序的效率,因此不建议使用,但atomic是默认的特性。
(2)nonatomic
非原子性,也就是不添加同步锁,读写效率会高,但需要开发人员注意同时读写的情况,可以使用gcd的栏栅和同步方法来保证。
2、访问权限
(1)readWrite
生成getter、setter方法,并生成实例变量指针,但对于静态库类是无法修改的,所以即使能进入头文件也无法修改。
(2)readOnly
只生成getter方法,可以用于数据保护,在interface中把属性声明了readOnly,在continue-class中再把属性声明为readWrite,就能实现私有属性的效果,从而有更好的封装特性,但其实通过KVC
依然可以从外部修改属性,但不建议这样使用。
3、内存管理
(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:不会持有对象,但引用对象,对象释放后,会产生野指针,主要用于兼容以前的方法。
4、方法命名
(1)getter = <name>
属性生成的默认getter方法名:属性名
(2)setter = <name>
属性生成的默认getter方法名:set+属性名
5、结论
属性不是随便填写的,需要严格根据该属性在程序中的作用,再选择。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
IOS开发之@property的详细介绍在类中定义属性时,总会使用到@property进行定义,下面就来说说@property的使用。在使用过程中,如果需求公开
华为p40第一次充电注意事项,下面给大家详细介绍一下具体步骤及说明。华为p40首次充电注意事项首先拿到新机后,在手机电池耗完后再进行充电。使用原装充电器或者是符
一介绍在笔者支持业务过程中,经常遇到开发咨询replaceinto的使用场景以及注意事项,这里做个总结。从功能原理,性能和注意事项上做个说明。二原理2.1当表中
编辑上传文件的页面upload.html注意事项:上传方式使用POST不能使用GET(GET不能上传文件)表单enctype属性应该设置为multipart/f
首先使用子查询的时候注意事项包括,子查询可以嵌套多层和子查询需要圆括号()括起来,下面我们来看看详细的介绍。基础介绍1,wherer:子查询一般会返回单行单列单