【发布时间】:2012-07-05 03:08:24
【问题描述】:
我的项目支持 ARC,我有两个模型,例如:
Category:
@interface Parent : NSObject
@property (assign, nonatomic) Category *parent;
@property (strong, nonatomic) NSArray *children;
@property (strong, nonatomic) NSArray *subCategories;
@end
Product:
@interface Child : NSObject
@property (strong, nonatomic) NSString *name;
@property (assign, nonatomic) Category *category;
@end
为了避免引用循环并在 iOS 4.x 上进行部署,我将 Child 的 parent 属性设置为 assign 而不是 weak。
从 JSON 数据中,我可以获得包含我的类别和产品的树。当我使用树进行枚举时,一切都很完美。而且我有一种递归方法来搜索名称与关键字匹配的产品。方法如下:
- (NSArray *)productsWithKeyword:(NSString *)keyword
{
NSMutableArray *filteredProducts = [NSMutableArray array];
for (Category *cat in self.children) {
NSArray *subResult = [cat productsWithKeyword:keyword];
[filteredProducts addObjectsFromArray:subResult];
}
return [filteredProducts copy];
}
问题是当我使用返回的数组时,我可以获得正确的category 属性。但从第二次开始,category 属性变为 0(从调试器中捕获)。
那么,有什么问题吗?问题的解决方法是什么?
【问题讨论】:
-
我还尝试将父级和类别属性设置为强。但问题依然存在。
-
天啊,这是我自己的愚蠢问题。
标签: ios properties automatic-ref-counting