retain 和 assign 的区别使用
来源:互联网 发布:绥化学院教务管理网络 编辑:程序博客网 时间:2024/05/16 17:42
MRC 下,会出现循环 retain 的问题,这种情况下,一次 release 并不能完成释放,如下:
#import <Foundation/Foundation.h>@class Person;@interface Car : NSObject@property (nonatomic , retain ) Person * ownerPerson;@end
#import <Foundation/Foundation.h>@class Car;@interface Person : NSObject@property (nonatomic , retain ) Car * ownerCar;@end
- (void)viewDidLoad { [super viewDidLoad]; Car * mCar = [[Car alloc] init]; Person * mPerson = [[Person alloc] init]; mCar.ownerPerson = mPerson; mPerson.ownerCar = mCar; [mCar release]; [mPerson release]; NSLog(@"mCar %ld",[mCar retainCount]); NSLog(@"mPerson %ld",[mPerson retainCount]); [mCar release]; [mPerson release];}
打印结果如下:
2017-11-19 16:18:46.997212+0800 test[4158:362888] mCar 12017-11-19 16:18:46.997400+0800 test[4158:362888] mPerson 12017-11-19 16:18:46.997501+0800 test[4158:362888] Car dealloc2017-11-19 16:18:46.997579+0800 test[4158:362888] Person dealloc
因为循环引用的问题,需要再次进行 release,但是这样的处理又不科学,这里解决的时候,可以将 reatin 换为 assign 进行修饰.因为 assign 不会使得引用计数 +1
阅读全文
0 0
- retain 和 assign 的区别使用
- retain和copy还有assign的区别
- retain和copy还有assign的区别
- retain和copy还有assign的区别
- retain和copy还有assign的区别
- retain和copy还有assign的区别
- assign、retain和copy的区别
- retain和copy还有assign的区别
- assign、retain和copy的区别
- retain\assign\copy的区别
- assign、retain、copy的区别
- retain copy assign 的区别
- readwrite, readonly, assign, retain, copy, nonatomic属性的作用? 什么情况使用copy,assign和retain?
- iOS中关于atomic和nonatomic,assign、weak、strong、retain的使用、区别
- retain和copy还有assign的区别,以及引用计数
- retain和copy还有assign的区别,以及引用计数
- retain、copy、assign、 strong、weak、autorelease的用法和区别
- strong,weak,copy,retain和assign的区别
- MIME详解
- SDUT-3399
- 关于哥德巴赫猜想
- Visual Studio Code之常备快捷键
- 分支预测(Branch Prediction)
- retain 和 assign 的区别使用
- JAVA【多线程一】
- GAN之根据文本描述生成图像
- CCFJson查询之Java实现代码
- tornado_5_异步web服务
- 在jsp里面简单分页
- hdu
- Qt信号和槽机制
- git权威指南总结七:git merge冲突解决