私のプロジェクトは ARC 対応で、次のような 2 つのモデルがあります。
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 の親プロパティを に設定しますが、 には設定し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
プロパティを取得できることです。しかし、2 回目以降はcategory
プロパティが 0 になります (デバッガからキャッチ)。
だから問題は何ですか?そして、問題の修正は何ですか?