Objective c NSMutableArray addObject不工作

Objective c NSMutableArray addObject不工作,objective-c,nsmutablearray,Objective C,Nsmutablearray,我在我的view controller.h文件中声明了一个NSMutableArray*categories,并为其声明了一个属性 在我的.m文件中的NSXMLParser委托的parser:foundCharacters:方法中,我有以下代码: -(void)parser:(NSXMLParser *) parser foundCharacters:(NSString *)string { if (elementFound) { element

我在我的view controller.h文件中声明了一个
NSMutableArray*categories
,并为其声明了一个属性

在我的.m文件中的
NSXMLParser
委托的
parser:foundCharacters:
方法中,我有以下代码:

-(void)parser:(NSXMLParser *) parser foundCharacters:(NSString *)string  
{  
    if (elementFound)  
    {  
        element = string;  
        [self.categories addObject:element];  
    }  
}
但在调试模式下进入
[self.categories addObject:element]
行后,当我将鼠标悬停在该行上时,XCode告诉我大小为0x0,0个对象。我的XML文件中有3个元素,因此数组中应该有3个项目

我遗漏了一些非常明显的东西,我不知道是什么。“0x0”部分是一个内存地址。特别是“nil”,这意味着您的可变数组在调用时不存在。尝试在-init方法中创建它:

categories = [[NSMutableArray alloc] init];

不要忘记在-dealloc中释放它。

使用

categories = [NSMutableArray array];

数组类方法是自动删除的,因此无需发布。

对于您以后的帖子:格式化代码的方法是选择代码块,并使用帖子编辑器顶部的“代码”格式化程序按钮将所有内容缩进4个空格。对不起-我是从另一个论坛复制和粘贴的,我想格式化的效果不太好!谢谢,我不知道为什么我总是忘记做这件事。谢谢。(2012年更新:如果您使用的是ARC,发布/解除锁定部分可以忽略。)谢谢!很容易忘记,在Objective-C.Vishu中,对零对象引用的消息不会失败-您的解决方案是有效的,但我认为Joshua Nozzi的解决方案更好,因为它需要更少的内存。这在功能上相当于我五年半前的答案,只是使用便利方法而不是alloc/init。内存使用没有差别,结果完全相同。@JoshuaNozzi数组类方法本身会生成一个自动释放的数组,这意味着您不必(也不应该)手动释放它。我知道这一点。我的观点是,六年后,由于ARC的原因,手动参考计数已不再是一个问题,您添加了一个功能等效的答案。为什么不回答一个尚未回答的问题,或者用一个明显更好的答案来回答一个问题呢?