子数组总是空的

时间:2010-01-26 12:10:26

标签: iphone objective-c

使用以下代码我总是使用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

1 个答案:

答案 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因为它已经存在,因为它将按需创建。这样,你也不会有泄漏。