欢迎使用CSDN-markdown编辑器
来源:互联网 发布:java游戏破解合集 编辑:程序博客网 时间:2024/06/11 16:09
__weak & __unsafe_unretained的用法以及区别
__unsafe_unretained: 不会对对象进行retain,当对象销毁时,会依然指向之前的内存空间(野指针)
__weak: 不会对对象进行retain,当对象销毁时,会自动指向nil
代码示例
#import <Foundation/Foundation.h> #import "Person.h" int main(int argc, const char * argv[]) { Person *p = [[Person alloc] init]; Person *p1 = p;
p = nil; //p已经指向nil,但是还能访问name属性,说明对象没有被销毁,默认指针被__strong修饰 //__strong Person *p = [[Person alloc] init]; //__strong Person *p1 = p; NSLog(@"%@",p1);}
output: <Person: 0x100200000>
- 当使用__weak时
#import <Foundation/Foundation.h> #import "Person.h" int main(int argc, const char * argv[]) { Person *p = [[Person alloc] init]; __weak Person *p1 = p p = nil; //p指向nil,p1为弱指针,p1指向nil NSLog(@"%@",p1); }
* 当使用__unsafe_unretained时
#import <Foundation/Foundation.h> #import "Person.h" int main(int argc, const char * argv[]) { Person *p = [[Person alloc] init]; __unsafe_unretained Person *p1 = p; p = nil; //p指向nil,p1的弱引用指针不会销毁,会继续指向对象的地址,对象已经销毁,此时p1访问的是"僵尸"对象 NSLog(@"%@",p1); }
访问对象已经销毁-[Person respondsToSelector:]: message sent to deallocated instance 0x100302560
0 0
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 基于fastcv的三维重建技术介绍
- STC Uart1,Uart2 关联 printf 函数
- Android下各个按键对应的key code
- oracle avg() 绝对平均值
- 第4周项目2-建立“单链表”算法库
- 欢迎使用CSDN-markdown编辑器
- C++11中emplace的使用
- AIDL 跨应用服务
- 关于LeetCode中Valid Parentheses一题的理解
- 音乐播放器项目总结
- Qt pro->vs工程和vs工程->pro
- 循环队列实现
- Win10新建360浏览器快捷菜单
- java api文档的阅读技巧