头文件:@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
object c 循环引用计数问题,非常重要。
最新推荐文章于 2022-07-20 20:12:29 发布