iOS内存管理1-__weak与__unsafe_unretained
来源:互联网 发布:nginx ssl配置详解 编辑:程序博客网 时间:2024/05/22 05:31
__weak以及__unsafe_unretained区别(ARC下)
例子1:
__unsafe_unretained id obj0 = nil; { id obj1 = [[NSObject alloc] init]; obj0 = obj1; NSLog(@"obj1: %@", obj1); } NSLog(@"obj0: %@", obj0);
输出:
例子2:
__weak id obj0 = nil; { id obj1 = [[NSObject alloc] init]; obj0 = obj1; NSLog(@"obj1: %@", obj1); } NSLog(@"obj0: %@", obj0);
输出:
可以看出两者的不同:
(1) __unsafe_unretain在对象离开作用域的时候就会释放,obj1声名的时候是强引用,引用计数为1,obj0赋值不会增加引用计数,作用域结束,obj1就会release引用计数为0,对象释放,但是obj0中仍然存放着之前的地址,没有清空,所以继续使用就会不安全unsafe
(2) __weak弱引用,主要是为了解决循环引用造成的内存泄漏问题,在离开作用域的时候会将指针赋值null,从而在之后不可以继续使用
0 0
- iOS内存管理1-__weak与__unsafe_unretained
- iOS内存管理-所有权修饰符:__strong, __weak/__unsafe_unretained, __autoreleasing
- [iOS]关于__unsafe_unretained与__weak
- iOS 高级内存管理:比较__unsafe_unretain、__strong、__weak、__autoreleasing
- iOS 高级内存管理:比较__unsafe_unretain、__strong、__weak、__autoreleasing
- iOS 高级内存管理:比较__unsafe_unretain、__strong、__weak、__autoreleasing
- ios __block与__weak
- __strong、__weak、__unsafe_unretained和__autoreleasing修饰符
- __weak & __unsafe_unretained的用法以及区别
- IOS开发(77)之iOS高级内存管理:比较__unsafe_unretain、__strong、__weak、__autoreleasing
- iOS OC内存管理、ARC、property属性、__strong、__weak、__block——iOS 编码复习(一)
- iOS中的__block 与__weak
- iOS __block 与 __weak区别
- (0019)iOS 开发之关于__weak修饰NSString以及内存管理的问题
- iOS 内存管理篇(三)---__strong/__weak/__unsafe_unretain/__autoreleasing 认识和使用
- iOS与内存管理
- iOS与内存管理
- iOS与内存管理
- pthread_create用法 http://blog.csdn.net/tommy_wxie/article/details/8545253
- 我对推荐评测指标的理解
- Windows今日补丁
- 未来视频会议技术发展趋势
- eclipse集成插件 绿色方式
- iOS内存管理1-__weak与__unsafe_unretained
- eclipse Package Explorer中Other Projects问题
- 从oracle 10g转到oracle 11g更改字符集
- foo是什么意思??
- Android源码分析网址
- css实现浏览器导航功能
- rfc5766-turn-server webrtc穿透服务器配置
- iOS使用AFNetWorking获取网络数据时遇到的问题??
- ndk-stack的使用