object c 循环引用计数问题,非常重要。
2015-06-26 13:25
567 查看
头文件:@interface ObjA : NSObject@property (nonatomic, strong) ObjB * objB;@end@interface ObjB : NSObject@property (nonatomic, strong) ObjA * objA;@end源文件:@implementation ObjA@synthesize objB;-(void) dealloc{ NSLog(@"ObjA");}@end@implementation ObjB@synthesize
objA;-(void) dealloc{ NSLog(@"ObjB");}@end错误用法:-(void) retainCycleTest{ /** 以下代码将导致死锁而内存泄露,ObjA,ObjB都无法释放,观察ObjA,ObjB的dealloc函数即可 */ ObjA * a = [[ObjA alloc] init]; ObjB * b = [[ObjB alloc] init]; a.objB = b; b.objA = a;}解救方法:@interface ObjB : NSObject@property
(nonatomic, weak) ObjA * objA;@end
objA;-(void) dealloc{ NSLog(@"ObjB");}@end错误用法:-(void) retainCycleTest{ /** 以下代码将导致死锁而内存泄露,ObjA,ObjB都无法释放,观察ObjA,ObjB的dealloc函数即可 */ ObjA * a = [[ObjA alloc] init]; ObjB * b = [[ObjB alloc] init]; a.objB = b; b.objA = a;}解救方法:@interface ObjB : NSObject@property
(nonatomic, weak) ObjA * objA;@end
相关文章推荐
- 解决C++与object-c混合编译
- Objective-C(四、属性声明与功能,点语法)——iOS开发基础
- makeObjectsPerformSelector 方法的用法
- [教程技巧] 没有C语言和Objective-C基础 如何快速学习iOS开发
- objectForKey与valueForKey的区别
- Design Patterns Elements of Reusable Object-Oriented Software
- 一种使用QThread线程的新方法QObject::moveToThread
- objectForKey与valueForKey在NSDic…
- 【2012.08.06】iOS学习之Objective…
- 下拉刷新对象RefreshObject
- Android 执行 gson.toJson(object) 报java.lang.StackOverflowError异常
- Objective-C(三、类与继承,基类,self、super关键字,多态,组合)——iOS开发基础
- 黑马程序员-IOS学习笔记(一)Objective-C概述
- DynamicXml -- 动态读取操作XML (一个从XML到Object的通用实现)
- Objective-C(二、类与isa指针,类的封装,set&get,类方法,对象方法)——iOS开发基础
- java 的long 时间与objective-c的时间转换
- Objective-C(一、文件扩展名,驼峰标识法,#import与#include,OC弱语法)——iOS开发基础
- 《Objective-C Runtime分析(三)-objc_msgSend》
- 《Objective-C Runtime分析(二)-Class,Method,SEL,IMP》
- Objective-C该Protocol