@property与@synthesize是成对出现的,可以自动生成某个类成员变量的存取方法。在Xcode4.5以及以后的版本,@synthesize可以省略。

1.atomic与nonatomic
atomic:默认是有该属性的,这个属性是为了保证程序在多线程情况,编译器会自动生成一些互斥加锁代码,避免该变量的读写不同步问题。
nonatomic:如果该对象无需考虑多线程的情况,请加入这个属性,这样会让编译器少生成一些互斥加锁代码,可以提高效率。

2.readwrite与readonly
readwrite:这个属性是默认的情况,会自动为你生成存取器。
readonly:只生成getter不会有setter方法。
readwritereadonly这两个属性的真正价值,不是提供成员变量访问接口,而是控制成员变量的访问权限。

3.strong与weak
strong:强引用,也是我们通常说的引用,其存亡直接决定了所指向对象的存亡。如果不存在指向一个对象的引用,并且此对象不再显示在列表中,则此对象会被从内存中释放。
weak:弱引用,不决定对象的存亡。即使一个对象被持有无数个弱引用,只要没有强引用指向它,那么还是会被清除。
strongretain功能相似;weakassign相似,只是当对象消失后weak会自动把指针变为nil;

4.assign、copy、retain
assign:默认类型,setter方法直接赋值,不进行任何retain操作,不改变引用计数。一般用来处理基本数据类型。
retain:释放旧的对象(release),将旧对象的值赋给新对象,再令新对象引用计数为1。我理解为指针的拷贝,拷贝一份原来的指针,释放原来指针指向的对象的内容,再令指针指向新的对象内容。
copy:与retain处理流程一样,先对旧值release,再copy出新的对象,retainCount为1.为了减少对上下文的依赖而引入的机 制。我理解为内容的拷贝,向内存申请一块空间,把原来的对象内容赋给它,令其引用计数为1。对copy属性要特别注意:被定义有copy属性的对象必须要 符合NSCopying协议,必须实现- (id)copyWithZone:(NSZone *)zone方法。
也可以直接使用:
    使用assign: 对基础数据类型 (NSInteger,CGFloat)和C数据类型(int, float, double, char, 等等)
    使用copy: 对NSString
    使用retain: 对其他NSObject和其子类

5.getter setter
getter:是用来指定get方法的方法名
setter:是用来指定set访求的方法名
在@property的属性中,如果这个属性是一个BOOL值,通常我们可以用getter来定义一个自己喜欢的名字,例如:
@property (nonatomic, assign, getter=isValue) boolean value;
@property (nonatomic, assign, setter=setIsValue) boolean value;

转载于:https://www.cnblogs.com/lingzhihua/p/4866523.html

iOS开发中@property的属性weak nonatomic strong readonly等介绍相关推荐

  1. (0022)iOS 开发之@property的属性Weak Strong的深入学习

    最近做项目发现经常有一些疑惑,发现一些天天写的代码理解的不是很清楚,于是准备对一些问题进行彻底的总结.深究,以此夯实基础!记录在案. 1.@property 的介绍: 与@synthesize配对使用 ...

  2. 深入理解 iOS 开发中的锁

    深入理解 iOS 开发中的锁 摘要 本文的目的不是介绍 iOS 中各种锁如何使用,一方面笔者没有大量的实战经验,另一方面这样的文章相当多,比如 iOS中保证线程安全的几种方式与性能对比.iOS 常见知 ...

  3. iOS开发UI篇—transframe属性(形变)

    iOS开发UI篇-transframe属性(形变) 1. transform属性 在OC中,通过transform属性可以修改对象的平移.缩放比例和旋转角度 常用的创建transform结构体方法分两 ...

  4. iOS开发中标签控制器的使用——UITabBarController

    iOS开发中标签控制器的使用--UITabBarController 一.引言 与导航控制器相类似,标签控制器也是用于管理视图控制器的一个UI控件,在其内部封装了一个标签栏,与导航不同的是,导航的管理 ...

  5. 浅谈iOS 开发中的界面通信

    在任何的软件开发中都离不开界面与界面之间的通信,界面通信的最直接的方法就是界面传值. 在开发过程中我们在页面传值时我们通常使用的方法有:属性传值法,block传值法,代理传值法,以及单例传值法,通知传 ...

  6. iOS开发中遇到的一些问题及解决方案【转载】

    iOS开发中遇到的一些问题及解决方案[转载] 2015-12-29 [385][scrollView不接受点击事件,是因为事件传递失败] // //  MyScrollView.m //  Creat ...

  7. iOS开发中各种关键字的区别

    1.一些概念 1.浅Copy:指针的复制,只是多了一个指向这块内存的指针,共用一块内存. 深Copy:内存的复制,两块内存是完全不同的, 也就是两个对象指针分别指向不同的内存,互不干涉. 2.atom ...

  8. iOS开发中的单元测试(三)——URLManager中的测试用例解析

    本文转载至 http://www.cocoachina.com/cms/plus/view.php?aid=8088   此前,我们在<iOS开发中的单元测试(一)&(二)>中介绍 ...

  9. iOS开发中屏幕旋转(二)

    Morris_ 2019.04.11 前面有总结过一些在开发中遇到的屏幕旋转的基础知识. 一.设置应用支持的转屏方向 设置方式 00x1 在TARGET->General->Deploym ...

最新文章

  1. 文本分类的基本思想和朴素贝叶斯算法原理
  2. 云服务器 ECS 配置:阿里云ECS Windows Server 2012 搭建AD
  3. 用户、组或角色 'zgb' 在当前数据库中已存在。 (Microsoft SQL Server,错误: 15023)
  4. 查看Eclipse32位还是64位以及Eclipse的编译版本号,查看JDK是32位还是64位
  5. .net面试题大全,绝大部分面试题(有答案)
  6. 有没有code能改xml内容_Spring源码解析-applicationContext.xml加载和bean的注册
  7. python无符号转有符号_Python | 散布符号
  8. 吴功宜计算机网络教程ppt,计算机网络 吴功宜 编著ppt课件.ppt
  9. 专访 | 「Smartbi 」VP徐晶:未来,BI将成为决策者的诸葛亮
  10. 业务用例模型涉及的主要概念
  11. Rust: (作者 洛佳) 使用Rust编写操作系统(附录一):链接器参数
  12. 西门子触摸屏中显示HTML,西门子触摸屏上传问题
  13. 网页数据导出为Excel(带图片)
  14. 大学计算机基础实训13,东南大学《大学计算机基础》实验13EXCEL图表制作.pdf
  15. 笔记本电脑开机后自带的键盘用不了,需要重启电脑才能用
  16. Makefile wildcard
  17. 最近,微信终于支持多设备同时在线:最大问题是消息不同步
  18. 快码加编——代码生成神器
  19. CANoe-第3个仿真工程-总线仿真-1概述
  20. 搜狐邮箱无法被Foxmail、网易邮箱大师代收的问题的解决方法

热门文章

  1. 简单的封装axios 不包含状态码和提示
  2. Taro+react开发(53) Taro提示操作
  3. 前端学习(3122):react-hello-react总结state
  4. 前端学习(2934):上午回顾
  5. [html] 在H5中如何预加载音频?
  6. 工作395-路由选择
  7. [vue] 你有看过vue的源码吗?如果有那就说说看
  8. [css] 你是如何压缩字体的?
  9. oracle之数据处理2
  10. 前端学习(665):逻辑中断逻辑或二