关于C#:无法将项目添加到NSMutableArray ivar

Cannot add items to an NSMutableArray ivar

我的目标是将一个字符串添加到数组中,并在我调用的方法中做到这一点。

用这种方法,我在数组中得到一个空值,不知道为什么。 我上课的时候有这个:

1
NSMutableArray *listOfEvents;

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

1
2
3
4
5
-(void)EventList
{
    [listOfEvents addObject:@"ran"];
    NSLog(@"%@", listOfEvents);    
}

我在日志中得到(null)

如果将数组定义NSMutableArray *listOfEvents;放在函数主体中,则每次都会得到字符串值@"ran",因此数组始终只有一个值,而不是包含许多名为@"ran"的字符串。

这怎么了 即使我已经阅读了很多次文档,看来我也不了解数组。


我假设您尚未初始化listOfEvents

确保在类的init方法中执行listOfEvents = [[NSMutableArray alloc] init];。 还要确保在类的dealloc方法中释放它。


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

1
2
3
4
5
6
7
8
-(void)EventList
{
    if (listOfEvents == nil) {
        listOfEvents = [[NSMutableArray alloc] init];
    }
    [listOfEvents addObject:@"ran"];
    NSLog(@"%@",listOfEvents);      
}

在Objective-C中,具有void的消息返回类型发送到nil到绝对静默的无处。

另外,为了平衡起见,请确保在dealloc实现中调用了[listOfEvents release]


您需要alloc NSMutableArray。 首先尝试执行此操作-

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

之后,您可以按照计划进行操作...


显然您没有初始化数组。

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

如果那是您的问题,我建议再次阅读文档。 而不是NSMutableArray文档。 返回到Objective-C编程语言等。