iOS strong和weak的异同
来源:互联网 发布:下载免费大片软件 编辑:程序博客网 时间:2024/06/18 03:47
之前说过iOS是高技能行业,对开发者要求很高,很多相似的知识点要分清,strong 和weak,它们都是指针的属性,当遇到比如UIButton*的时候,这个property是个指针,需要指定strong或者weak。
strong表示保存这个指针对象的内存直到结束使用。也就是说,强力的指向了一个区域,直到指向nil或者我自己也不在内存上面了。
weak表示如果没人在用这个指针了,那就设为nil。只要还有人strong指向它那么就保留它,也就是说,不再指向它了也没有关系。事实上,weak还表示如果没有人指向它了,它就会被清除内存,同时就被指向nil,因为不能读取不存在的东西。
ios5支持weak,设置了weak只有ios5能够在runtime的时候自动设置nil
这不是垃圾回收,这还是reference counting,用reference counting表示堆上还有多少strong指针,垃圾回收不可控,这是完全可控的,当失去最后一个strong指针,立刻释放内存。strong、weak都是针对property的,本地变量都是strong的。
如果把strong 和 weak 与气球联想起来或许更容易理解。只有当没有人牵住气球的绳子的时候气球才会飞走(dealloc),牵住气球绳子的人数就是retain count。很多人可以通过绳子牵住同一个气球,你可以用strong或者是weak来对相关的对象进行get/set properties和call methods操作。强【strong】就像是牵住气球的绳子,只要你牵住了绳子,气球就不会飞走。弱【weak】就像是盯着气球看,你能看到它,access properties,call methods,但是气球的绳子不在你手上,如果所有牵住气球的人都松了手,气球就飞走了,然后你也无法对它进行操作了。
strong表示保存这个指针对象的内存直到结束使用。也就是说,强力的指向了一个区域,直到指向nil或者我自己也不在内存上面了。
weak表示如果没人在用这个指针了,那就设为nil。只要还有人strong指向它那么就保留它,也就是说,不再指向它了也没有关系。事实上,weak还表示如果没有人指向它了,它就会被清除内存,同时就被指向nil,因为不能读取不存在的东西。
ios5支持weak,设置了weak只有ios5能够在runtime的时候自动设置nil
这不是垃圾回收,这还是reference counting,用reference counting表示堆上还有多少strong指针,垃圾回收不可控,这是完全可控的,当失去最后一个strong指针,立刻释放内存。strong、weak都是针对property的,本地变量都是strong的。
如果把strong 和 weak 与气球联想起来或许更容易理解。只有当没有人牵住气球的绳子的时候气球才会飞走(dealloc),牵住气球绳子的人数就是retain count。很多人可以通过绳子牵住同一个气球,你可以用strong或者是weak来对相关的对象进行get/set properties和call methods操作。强【strong】就像是牵住气球的绳子,只要你牵住了绳子,气球就不会飞走。弱【weak】就像是盯着气球看,你能看到它,access properties,call methods,但是气球的绳子不在你手上,如果所有牵住气球的人都松了手,气球就飞走了,然后你也无法对它进行操作了。
0 0
- iOS strong和weak的异同
- IOS strong 和 weak
- ios strong和weak
- [ios] strong和weak
- ios strong和weak
- ios strong和weak
- iOS strong 和weak
- iOS strong和weak
- ios-strong和weak
- iOS strong 和weak的理解
- iOS strong 和weak的形象理解
- ios weak和strong使用的区别
- iOS strong 和weak的形象理解
- iOS strong 和weak的形象理解
- ios weak和strong的区别
- iOS开发 strong和weak的使用
- iOS中strong和weak的区别
- weak assign 和strong copy retain异同
- iOS根据字符串计算UITextView高度
- lamp下防百度文库
- java 多线程内存模型
- Android 中关于 Cursor 类的介绍
- java中FTP下载文件
- iOS strong和weak的异同
- 怎样把centos 6.5 系统里的网卡em1还原为eth0
- log4j 2.x 打印mybatis select的结果
- iOS 如何隔绝UITableViewCell中UIButton的连续点击事件
- 作业8.15
- 如何让new 操作 不分配内存 只调用构造函数
- RevitAPI: FamilyManager.Set - InvalidOperationException: There is no current type
- LeetCode-Isomorphic Strings-解题报告
- IOS图像9之自定义侧划栏(类似新浪微博Swift)