声明property的语法为:@property(属性 [, 属性2, ...]) 类型 名称;

属性分为3类:

1.读写属性(Writability)包含:readwrite / readonly

2.setter语义(Setter Semantics)包含:assign / retain / copy

3.原子性(Atomicity)包含:nonatomic

下面具体说明各个属性的含义

readwrite / readonly:

决定是否生成set访问器,readwrite是默认属性,生成getter和setter方法;readonly只生成getter方法,不生成setter方法。
readonly关键字代表setter不会被生成, 所以它不可以和 copy/retain/assign组合使用。

assign / retain / copy:

这些属性用于指定set访问器的语义,也就是说,这些属性决定了以何种方式对数据成员赋予新值。

assign:

直接赋值,索引计数不改变,适用于简单数据类型,例如:NSIngeter、CGFloat、int、char等。

retain:

指针的拷贝,使用的是原来的内存空间。
对象的索引计数加1。
此属性只能用于Objective-C对象类型,而不能用于Core Foundation对象。(原因很明显,retain会增加对象的引用计数,而基本数据类型或者Core Foundation对象都没有引用计数)。

copy:

对象的拷贝,新申请一块内存空间,并把原始内容复制到那片空间。
新对象的索引计数为1。
此属性只对那些实行了NSCopying协议的对象类型有效。

很多Objective-C中的object最好使用用retain,一些特别的object(例如:string)使用copy。


nonatomic:

非原子性访问,不加同步,多线程并发访问会提高性能。如果不加此属性,则默认是两个访问方法都为原子型事务访问。默认值是atomic,为原子操作。
(atomic是Objc使用的一种线程保护技术,基本上来讲,是防止在写未完成的时候被另外一个线程读取,造成数据错误。而这种机制是耗费系统资源的,所 以在iPhone这种小型设备上,如果没有使用多线程间的通讯编程,那么nonatomic是一个非常好的选择。)

iPhone开发:Objective-c中@property声明时的参数释疑相关推荐

  1. python语法中infile语句_浅谈pymysql查询语句中带有in时传递参数的问题

    直接给出例子说明: cs = conn.cursor() img_ids = [1,2,3] sql = "select img_url from img_url_table where i ...

  2. python查询数据库带逗号_浅谈pymysql查询语句中带有in时传递参数的问题

    直接给出例子说明: cs = conn.cursor() img_ids = [1,2,3] sql = "select img_url from img_url_table where i ...

  3. iphone开发在应用中监听(判断)来电状态-接听-拒接

    phone开发在应用中监听(判断)来电状态-接听-拒接-CoreTelephony   zxwo0o IOS,iphone,互联网络 CoreTelephony, CTCallCenter   0   ...

  4. Pytest学习-如何在用例代码中调用fixtrue时传入参数

    前言 在使用Pytest的时候,为了提高代码的复用性,我们一般会把一些常用操作,比如把登录方法写在 conftest.py 中,然后在不同测试用例中,调用这个登录方法. 但是在测试用例中,我们可能需要 ...

  5. 【debug】使用lambda在循环中传参时,参数总为同一个值

    发现问题: 当我使用PyQt5在写一个文本处理小工具时,需要在调用事件时传入参数,于是想到了lambda函数,代码如下: def radiotext(self):'''文档输出格式选择功能'''# 自 ...

  6. Android开发——异步任务中Activity销毁时的问题

    0.  前言 在Android开发中经常会发生Activity的销毁重建,比如用户长时间接听一个电话后回到APP.在Android开发--Fragment知识整理(二)中我们提到了使用Fragment ...

  7. SolidWorks二次开发---装配体中打开零件时保持方向

    不出意外,这是8月份最后一篇博文了. 其实代码在gitee上提交了很久了,一直没写博文. 前一段时间,在solidworks看到了这个小图标,这个功能是在装配体界面上查看零件预览,它和单独打开零件时的 ...

  8. 页面中调用swf 时allowScriptAccess 参数

    <param name="allowScriptAccess" value="always" /> <param name="all ...

  9. iPhone开发播放音乐与按钮声音

    1.背景音乐播放,支持mp3格式 循环播放长音乐. 这种播放音乐的方式导入框架#import <AVFoundation/AVFoundation.h>: NSString *musicF ...

最新文章

  1. android gpuimage显示的缩放和剪裁模式
  2. DOCKER上运行DOTNET CORE
  3. 为什么类的下行转换是不安全的_类型转换
  4. [react] 为何说虚拟DOM会提高性能?
  5. IOS 开发中 Whose view is not in the window hierarchy 错误的解决办法
  6. treegrid.bootstrap使用说明
  7. 微信也许会有重大变化
  8. 算法3-------最长子序列和
  9. Oracle的配置文件
  10. php矢量瓦片,矢量瓦片 - SegmentFault 思否
  11. 陕西师范大学计算机学院课表,陕西师范大学数学和信息科学学院课程表.doc
  12. 如何使用Camtasia给视频打码
  13. Chrome谷歌浏览器无需插件设置夜间模式,黑色主题
  14. SpringBoot生成条形码
  15. 遗传算法(四)——交叉、变异与替换
  16. 计算机在哪里修改储存默认磁盘,Win7资源管理器修改默认显示磁盘小教程
  17. Disparity Map
  18. 推荐几个编程学习网站
  19. input获取焦点边框 outline属性
  20. oracle口试问题,Oracle口试复习(二)

热门文章

  1. 程序员面临的伦理困境
  2. 关于webpack的使用
  3. 51nod 1275 连续子段的差异
  4. CCF201403-1 相反数(100分)
  5. u-boot移植问题记录(一)--U_BOOT_CMD区别
  6. uvalive3209City Game
  7. php中使用phpmailer发送邮件
  8. Writing a FilterUnloadCallback Routine for a Minifilter Driver 为一个微过滤驱动写一个过滤器卸载回调例程...
  9. 6.10 docker (二) 守护态运行
  10. asp.net C#压缩打包文件例子