【发布时间】:2009-07-02 04:45:28
【问题描述】:
我正在开发一个 iPhone 应用程序。我有一个Row 类的对象,它需要释放Block 类的许多对象。当前每个Block 都有一个属性,该属性保留Row 类的实例变量。
@interface Block : UIImageView {
Row *yCoord;
}
@property (nonatomic,retain) Row *yCoord;
@end
每个Row 都包含这些块的NSMutableArray。
@interface Row : NSObject {
NSMutableArray *blocks;
}
-(void)addBlock:(Block*)aBlock;
@end
@implementation Row
-(void)addBlock:(Block*)aBlock {
[blocks addObject:aBlock];
aBlock.yCoord = self;
}
@end
我知道这是一个循环引用。 Apple 的文档指出,为了释放具有循环引用的对象,我需要一个弱引用而不是强引用(保留属性),但它没有贯彻并解释我是如何做到这一点的。我计划同时释放和释放行内的所有块以及行本身。如何在我的每个块中设置对其“父”行的弱引用?
【问题讨论】:
-
顺便说一句,您对您的问题的编辑和适当标记是值得称赞的,尤其是作为一个新的 SO 用户。太棒了!我感谢那些花时间为社区的利益做一些改进的人。
-
为什么,谢谢!这个网站正是我在各个方面一直在寻找的。只有当这么多人愿意跳出来立即回答时,花时间提出一个明确的问题才有意义。
标签: objective-c iphone weak-references circular-reference