NSMutableArray addObject不起作用

joe*_*oec 54 objective-c nsmutablearray

NSMutableArray *categories在我的视图控制器.h文件中声明了一个,并为它声明了一个属性.

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

-(void)parser:(NSXMLParser *) parser foundCharacters:(NSString *)string  
{  
    if (elementFound)  
    {  
        element = string;  
        [self.categories addObject:element];  
    }  
}
Run Code Online (Sandbox Code Playgroud)

但是当我[self.categories addObject:element]在调试模式中踩到它后将鼠标悬停在线上时,XCode告诉我大小为0x0,0个对象.我的XML文件中有3个元素,因此数组中应包含3个项目.

我错过了一些非常明显的东西,我无法弄清楚是什么.

Jos*_*zzi 145

"0x0"部分是存储器地址.具体来说,"nil",这意味着您的可变数组在被调用时不存在.尝试在-init方法中创建它:

categories = [[NSMutableArray alloc] init];
Run Code Online (Sandbox Code Playgroud)

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

  • (2012更新:如果您使用ARC,则可以忽略发布/ dealloc部分.) (17认同)
  • 我不知道为什么我一直忘记这样做.谢谢. (12认同)
  • 谢谢!在Objective-C中,很容易忘记对nil对象引用的消息不会失败. (4认同)

Vis*_*l16 7

使用初始化空数组

categories = [NSMutableArray array];
Run Code Online (Sandbox Code Playgroud)

数组类方法是自动释放的,因此无需释放.