无法将项目添加到NSMutableArray ivar

时间:2011-08-19 17:40:19

标签: objective-c cocoa nsmutablearray

我的目标是将一个字符串添加到数组中,然后在我调用的方法中执行此操作。

在这个方法中,我在数组中得到一个空值,并且不知道为什么。我在课程开始时就有这个:

NSMutableArray *listOfEvents;

以及我在每个事件上调用的方法:

-(void)EventList
{
    [listOfEvents addObject:@"ran"];
    NSLog(@"%@", listOfEvents);     
}

我在日志中得到(null)

如果我将数组定义NSMutableArray *listOfEvents;放在函数体中,每次都得到字符串值@"ran",因此数组总是只有一个值,而不是有许多名为{{的字符串1}}。

这有什么问题?似乎我无法理解有关数组的东西,即使我已多次阅读过这些文档。

4 个答案:

答案 0 :(得分:5)

我假设你没有初始化listOfEvents

确保您在班级的listOfEvents = [[NSMutableArray alloc] init];方法中init。另外,请确保在课程的dealloc方法中发布它。

答案 1 :(得分:3)

如果您在日志消息中收到nil,则需要确保在添加对象之前listOfEvents为非零。 IE:

-(void)EventList
{
    if (listOfEvents == nil) {
        listOfEvents = [[NSMutableArray alloc] init];
    }
    [listOfEvents addObject:@"ran"];
    NSLog(@"%@",listOfEvents);      
}

在Objective-C中,发送到void的{​​{1}}返回类型的邮件转到absolutely-silent nowhere-land.

此外,为了保持平衡,请务必在nil实施中进行[listOfEvents release]来电。

答案 2 :(得分:1)

显然你没有初始化阵列。

NSMutableArray *listOfEvents = [[NSMutableArray alloc] init];

如果这是您的问题,我建议您再次阅读文档。而不是NSMutableArray文档。返回 Objective-C编程语言和其他人。

答案 3 :(得分:1)

您需要alloc NSMutableArray。先试试这个 -

NSMutableArray *listOfEvents = [[NSMutableArray alloc] init];

在此之后你可以做你计划的事情......