iOS 属性详解
来源:互联网 发布:c语言棱形 编辑:程序博客网 时间:2024/05/16 05:27
_weak, __strong 用来修饰变量,此外还有 __unsafe_unretained, __autoreleasing 都是用来修饰变量的。
__strong 是缺省的关键词。
__weak 声明了一个可以自动 nil 化的弱引用。
__unsafe_unretained 声明一个弱应用,但是不会自动nil化,也就是说,如果所指向的内存区域被释放了,这个指针就是一个野指针了。
__autoreleasing 用来修饰一个函数的参数,这个参数会在函数返回的时候被自动释放。
strong和weak的区别
(weak和strong)不同的是 当一个对象不再有strong类型的指针指向它的时候 它会被释放 ,即使还有weak型指针指向它。
一旦最后一个strong型指针离去 ,这个对象将被释放,所有剩余的weak型指针都将被清除。
可能有个例子形容是妥当的。
想象我们的对象是一条狗,狗想要跑掉(被释放)。
strong型指针就像是栓住的狗。只要你用牵绳挂住狗,狗就不会跑掉。如果有5个人牵着一条狗(5个strong型指针指向1个对象),除非5个牵绳都脱落 ,否着狗是不会跑掉的。
weak型指针就像是一个小孩指着狗喊到:“看!一只狗在那” 只要狗一直被栓着,小孩就能看到狗,(weak指针)会一直指向它。只要狗的牵绳脱落,狗就会跑掉,不管有多少小孩在看着它。
只要最后一个strong型指针不再指向对象,那么对象就会被释放,同时所有的weak型指针都将会被清除。
assign,用于简单类型,计数器不加,直接赋值,一个指针,一块地址, setter 方法直接赋值,不进行任何 retain 操作,为了解决原类型与环循引用问题
readonly,只读,只生成get方法,没有set方法
readwrite,默认,可读写,set,get方法都会生成
unsafe_unretained,类似weak,所谓的unSafe就是指会容易出现也指针的情况,慎用
setter = xxxx,声明对象的set方法
getter = xxxx, 声明对象的get方法
nonatomic,非原子操作,系统不添加代码,运行速度相对快,但数据操作在多线程情况下相对不安全
atomic,原子操作,编译时会增加很多加锁解锁代码,数据操作在多线程情况下相对安全
* 使用assign: 对基础数据类型 (NSInteger)和C数据类型(int, float, double, char,等)
* 使用copy: 对NSString
* 使用retain: 对其他NSObject和其子类
0 0
- iOS textField属性详解
- iOS对象属性详解
- iOS对象属性详解
- iOS 属性详解
- iOS keyboard属性详解
- iOS @property 属性详解
- iOS-AutoresizesSubviews 属性详解
- iOS textfield属性详解
- iOS对象属性详解
- IOS开发之属性详解
- iOS:UIScrollView方法 属性详解
- iOS:UITableView 方法 属性 详解
- iOS:UITableViewCell 方法 属性 详解
- iOS- 详解文本属性Attributes
- iOS- 详解文本属性Attributes
- iOS- 详解文本属性Attributes
- iOS- 详解文本属性Attributes
- iOS- 详解文本属性Attributes
- Light 1020 - A Childhood Game (博弈)
- 电信诈骗技术高:IT工程师也中招
- GMAT数学满分多少?
- 功能测试与自动化测试到底谁高级?
- Linux设备之I2C
- iOS 属性详解
- [Erlang]Mnesia设置主键自增
- strchr strrchr strstr
- 当label半透明后导致 内容 模糊的问题
- C语言数据类型、运算符与表达式
- 如何正确编译 dashcast 和 ffmpeg
- windows套接字编程过程
- LeetCode Unique Paths(dp)
- WCF错误:413 Request Entity Too Large