iOS中属性的声明
来源:互联网 发布:淘宝提高销量技巧 编辑:程序博客网 时间:2024/09/21 09:01
1.atomic和nonatomic
atomic:原子性,是指事务的一个完整操作,操作成功就提交,反之就回滚,原子操作就是指具有原子性的操作。在objective-c 属性设置里面 默认的就是atomic ,意思就是 setter /getter函数是一个原子操作,如果多线程同时调用setter时,不会出现某一个线程执行完setter所有语句之前,另一个线程就开始执行setter,相当于 函数头尾加了锁 . 这样的话并发访问性能会比较低。
nonatomic:非原子性,非原子操作 一般不需要多线程支持的时候就用它,这样在 并发访问的时候效率会比较高 . 在objective-c里面通常对象类型都应该声明为非原子性的. iOS中程序启动的时候系统只会自动生成一个单一的主线程.程序在执行的时候一般情况下是在同一个线程里面对一个属性进行操作. 如果在程序中 我们确定某一个属性会在多线程中被使用,并且需要做数据同步,就必须设置成原子性的,但也可以设置成非原子性的,然后自己在程序中用加锁之类的来做数据同步。
总结:主要是在多线程下的区别。一般属性都声明为nonatomic,这样操作速度较快,但在多线程同时访问这一个属性的时候不安全,需要程序员自己加锁解锁。而atomic会自动生成加锁解锁的代码,多线程下相对安全。
2.readwrite:默认是可读可写的,可以用来赋值,也可以被赋值;
readonly:只读,不生成setter方法,也就是不能被赋值。
3.assign:所有属性默认是assign,相当于weak,常用于各种基础数据类型。
应用举例:属性A被声明为assign或weak,可以理解为A不拥有某个对象或指针,所以一旦拥有该对象或指针的变量(或属性)被释放,A将会指向nil;
特殊应用:所有delegate的声明必须用weak。
strong(retain):被声明的属性必须是objc对象,可以理解为拥有该对象的所有权。
4.copy:也是强引用(同strong、retain),被声明的属性必须是objc对象,并且要遵守NSCopying协议
应用:NSString类型要用copy。
- iOS中属性的声明
- ios中声明属性
- IOS中"声明属性"和类成员变量的关系
- IOS声明属性关键词
- iOS 声明属性关键字
- iOS中声明属性的时候self.xxx与_xxx的区别
- iOS中声明属性的适合self.xx与_xx的区别
- iOS中@Property声明的属性同时重写getter和setter方法报错问题
- [iOS]iOS在分类中声明属性的方法(不提倡使用)以及关联对象介绍
- iOS 声明属性关键字讲解
- iOS 声明属性关键字讲解
- iOS 声明属性关键字讲解
- iOS 声明属性关键字讲解
- iOS开发中的属性声明
- iOS 声明属性关键字讲解
- iOS 声明属性关键字讲解
- iOS为什么Block的属性声明要用copy
- iOS为什么Block的属性声明要用copy
- 常用JS脚本
- linux下修改环境变量问题
- Ubuntu中samba的安装配置经验
- 信息学奥林匹克竞赛-C语言选择结构
- gedis——go语言开发的redis代理
- iOS中属性的声明
- 从零开始学习SLAM
- aop
- FFmpeg解析视频里面的音频aac保存
- BIT2014级软件学院程序设计-07 Crossing River
- 怎样计算C++继承、虚继承、虚函数类的大小
- NodeJS 复制大文件防治包内存的解决办法
- 素数快速求法
- UIViewController的完整生命周期