iPhone开发:Objective-c中@property声明时的参数释疑
声明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声明时的参数释疑相关推荐
- python语法中infile语句_浅谈pymysql查询语句中带有in时传递参数的问题
直接给出例子说明: cs = conn.cursor() img_ids = [1,2,3] sql = "select img_url from img_url_table where i ...
- python查询数据库带逗号_浅谈pymysql查询语句中带有in时传递参数的问题
直接给出例子说明: cs = conn.cursor() img_ids = [1,2,3] sql = "select img_url from img_url_table where i ...
- iphone开发在应用中监听(判断)来电状态-接听-拒接
phone开发在应用中监听(判断)来电状态-接听-拒接-CoreTelephony zxwo0o IOS,iphone,互联网络 CoreTelephony, CTCallCenter 0 ...
- Pytest学习-如何在用例代码中调用fixtrue时传入参数
前言 在使用Pytest的时候,为了提高代码的复用性,我们一般会把一些常用操作,比如把登录方法写在 conftest.py 中,然后在不同测试用例中,调用这个登录方法. 但是在测试用例中,我们可能需要 ...
- 【debug】使用lambda在循环中传参时,参数总为同一个值
发现问题: 当我使用PyQt5在写一个文本处理小工具时,需要在调用事件时传入参数,于是想到了lambda函数,代码如下: def radiotext(self):'''文档输出格式选择功能'''# 自 ...
- Android开发——异步任务中Activity销毁时的问题
0. 前言 在Android开发中经常会发生Activity的销毁重建,比如用户长时间接听一个电话后回到APP.在Android开发--Fragment知识整理(二)中我们提到了使用Fragment ...
- SolidWorks二次开发---装配体中打开零件时保持方向
不出意外,这是8月份最后一篇博文了. 其实代码在gitee上提交了很久了,一直没写博文. 前一段时间,在solidworks看到了这个小图标,这个功能是在装配体界面上查看零件预览,它和单独打开零件时的 ...
- 页面中调用swf 时allowScriptAccess 参数
<param name="allowScriptAccess" value="always" /> <param name="all ...
- iPhone开发播放音乐与按钮声音
1.背景音乐播放,支持mp3格式 循环播放长音乐. 这种播放音乐的方式导入框架#import <AVFoundation/AVFoundation.h>: NSString *musicF ...
最新文章
- android gpuimage显示的缩放和剪裁模式
- DOCKER上运行DOTNET CORE
- 为什么类的下行转换是不安全的_类型转换
- [react] 为何说虚拟DOM会提高性能?
- IOS 开发中 Whose view is not in the window hierarchy 错误的解决办法
- treegrid.bootstrap使用说明
- 微信也许会有重大变化
- 算法3-------最长子序列和
- Oracle的配置文件
- php矢量瓦片,矢量瓦片 - SegmentFault 思否
- 陕西师范大学计算机学院课表,陕西师范大学数学和信息科学学院课程表.doc
- 如何使用Camtasia给视频打码
- Chrome谷歌浏览器无需插件设置夜间模式,黑色主题
- SpringBoot生成条形码
- 遗传算法(四)——交叉、变异与替换
- 计算机在哪里修改储存默认磁盘,Win7资源管理器修改默认显示磁盘小教程
- Disparity Map
- 推荐几个编程学习网站
- input获取焦点边框 outline属性
- oracle口试问题,Oracle口试复习(二)
热门文章
- 程序员面临的伦理困境
- 关于webpack的使用
- 51nod 1275 连续子段的差异
- CCF201403-1 相反数(100分)
- u-boot移植问题记录(一)--U_BOOT_CMD区别
- uvalive3209City Game
- php中使用phpmailer发送邮件
- Writing a FilterUnloadCallback Routine for a Minifilter Driver 为一个微过滤驱动写一个过滤器卸载回调例程...
- 6.10 docker (二) 守护态运行
- asp.net C#压缩打包文件例子