如何以及在何处分配内存?

时间:2012-02-21 05:05:21

标签: iphone objective-c

我将问题缩小到没有正确分配内存。我有一个名为subject的NSMutableArray作为Category的成员。当我用一系列主题填充该类别时,它不会存储。

我不确定如何以及在何处为主题分配内存,这就是我认为我的问题所在。

以下是摘录:

    Category *cat = [[Category alloc] init];
    cat.category_title = [result_categories stringForColumn:@"CATEGORY"];

    QuotesAppDelegate *appDelegate = (QuotesAppDelegate *)[[UIApplication sharedApplication] delegate];

    for (Subject *sb in appDelegate.subjects){

        if([cat.category_title isEqualToString:sb.category_title]){
            [cat.subjects addObject:sb];
            NSLog(@"Adding subject: %@ cat.subjects.count=%i", sb.title, cat.subjects.count);

        }

    }

(上面的日志确实打印了cat.subject名称,但它没有打印subject.count)

1 个答案:

答案 0 :(得分:4)

您是否已将内存分配给cat.subjects

cat.subject = [[NSMutableArray alloc] init];

subject = [[NSMutableArray alloc] init];
你的Category课程中的

?如果没有,那就去做吧。这可能是问题之一。


<强>更新
首先将代码从Category *cat = [Category alloc];更改为Category *cat = [[Category alloc] init];
并将您的初始化更改为

- (id)init {
    self = [super init];
    if (self) {
        subjects = [[NSMutableArray alloc] init]; 
    }
    return self;
}