我的项目启用了 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
but not 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(从调试器中捕获)。
所以有什么问题?解决这个问题的方法是什么?