A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 周易 中级黑马   /  2014-8-26 18:17  /  1059 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在main中创建两个对象  A  和 B
A对象引用b  B对象引用a
分别执行 [A / B realease] 发现引用计数还是1  说明他们直接循环引用了
#import "B.h"
@interface A:NSObject{
B *b;
}
@end
#import "A.h"
@interface B:NSObject{
A  *a;
}
@end
求案例解析

1 个回复

倒序浏览
本帖最后由 寇亮 于 2014-8-26 19:41 编辑

两端互相引用时会导致循环retain,对象永远无法释放。
在用@property声明成员变量时,可以一端用retain、一端用assign
  1. @class B;
  2. @interface A:NSObject{
  3.     @property (nonatomic, assign) B *b;
  4. }
  5. @end

  6. @class A;
  7. @interface B:NSObject{
  8.     @property (nonatomic, retain) A *a;
  9. }
  10. @end
复制代码



回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马