@property总结
来源:互联网 发布:vnr更新数据库失败 编辑:程序博客网 时间:2024/05/15 17:45
参考网址:
http://blog.csdn.net/dfqin/article/details/11669993
http://www.linuxidc.com/Linux/2014-03/97744.htm
http://www.cnblogs.com/andyque/archive/2011/08/03/2125728.html
http://blog.csdn.net/dfqin/article/details/11669993
http://www.linuxidc.com/Linux/2014-03/97744.htm
属性是一种支持访问对象成员变量的快捷方法,并且允许我们使用点语法。@property是给编译器看的一种指令,它可以在编译之后为我们生成相应的getter和setter方法。不仅如此,@property还可以帮助我们做内存管理。另外,使用@property 就不用单独声明实例变量,因为在没有显示提供实例变量声明的前提下,系统会自动帮助我们生成实例变量。
@property中的关键字可以分为三类:分别是:原子性,存取器控制,内存管理
原子性:
atomic: 表明操作是原子的意味着只有一个线程访问实例变量,atomic是线程安全的,至少在当前存取器上是安全的,它是一个默认特性,但是很少使用,因为比较影响效率
nonatomic:表示非原子的,可以被多个线程访问,它的效率比atomic快,但是不能保证在多线程环境下的安全性,在单线程和名犬只有一个线程访问的情况下广泛使用。
存取器控制
readwrite(默认):readwrite是默认值,表示该属性同时拥有setter和getter
readonly:readonly表示只有getter没有setter、
内存管理:
assign(默认)assign用于值类型,如 int,float,double,NSInterger,CGFloat等表示单纯的复制,还包括不存在所有权关系的对象,比如常见的delegate
retain:在setter方法中,需要对传入对象的引用计数+1,简单来说就是对于传入的对象拥有所有权,只要对该对象有所有权,该对象就不会被释放
strong:strong是IOS在引入ARC的时候引入的关键字,是retain的一个代替品,表示实例变量对传入的对象要有所有权关系,即强引用,strong,跟retain的意思是相同的并且产生相同的代码,但是在语义上能够更好的体现对象之间的关系
weak:在setter方法中,需要对传入的对象不进行引用计数+1简单来说,就是对于传入的对象没有所有权。当该对象引用计数为0的时候,即该对象被释放后,用weak声明的实例变量指向nil,即实例变量的值为0。delegate和outlet一般用weak来声明。
copy:与strong类似,但是区别在于实例变量是对传入对象的副本拥有所有权,而不是对象本身
atomic是默认行为,assign是默认行为。一般来说NSString类型的用copy,delegate用assign,非objc数据类型,比如int,float等基本数据类型用assign,而其他的objc类型,例如NSDate,等用strong。
如果我们自己实现了相应的getter和setter那么编译器就会使用我们自己定义的存取器,否则,编译器会根据atomic/nonatomic/retian/assign/copy.这其中我们指定的部分规则去生成相应的getter和setter。
1 0
- @property总结
- ant property 总结
- self,@property用法总结
- ant property总结
- iOS ARC Property 总结
- 【ant】ant property 总结
- property属性总结
- Property Animation要点总结
- ant property 总结
- @property 那些总结
- 总结@property参数
- @property,autorelease 知识点总结
- 总结@property关键字
- Property动画总结
- Attribute和Property的总结
- iOS - @property 和 @synthesize 总结
- Delphi属性Property学习应用总结
- 转载:Delphi属性Property学习应用总结
- Date型引用数据类型
- ios 图片拉伸resizableImageWithCapInsets:详解
- FD_SET TCP
- easyui主界面生成分析2
- 新学到的两个关键字IBInspectable / IBDesignable
- @property总结
- C# 参数传递行为
- ListView使用总结
- String以及StringBuffer相关应用讲解
- 免费天气预报接口
- Windows系统软件
- question_015-JAVA之Map的遍历方式
- Android中获取全局的Context技巧
- IO流