使用以下代码我总是使用Xcode调试器将category.subCategories计数为0
Category *category = [[Category alloc] init];
category.title = @"Pubs & Bars";
category.icon = @"cat_pubs&bars";
category.subCategories == [[NSMutableArray alloc] init];
Category *subCategory = [[Category alloc] init];
subCategory.title = @"Test Sub Category 1";
[category.subCategories addObject:subCategory];
使用以下代码定义的对象:
@interface Category : NSObject {
NSInteger *categoryId;
NSMutableString *title;
NSString *icon;
NSMutableArray *subCategories;
}
@property(assign,nonatomic,readonly) NSInteger *categoryId;
@property(nonatomic,copy) NSMutableString *title;
@property(nonatomic,copy) NSString *icon;
@property(nonatomic,retain) NSMutableArray *subCategories;
@end
答案 0 :(得分:7)
在以下行category.subCategories == [[NSMutableArray alloc] init];
中,您有一个双等号并检查它是否为真。所以subCategories在这里仍然是零,这就是为什么你的count
为0。
改为使用category.subCategories = [[NSMutableArray alloc] init];
。
就个人而言,我会使用自定义getter来懒惰地创建NSMutableArray
。在Category.m中:
- (NSMutableArray*) subCategories {
if (subCategories == nil) {
subCategories = [[NSMutableArray alloc] init];
}
return subCategories;
}
这样,您只需要使用subCategories
因为它已经存在,因为它将按需创建。这样,你也不会有泄漏。