【问题标题】:Cannot add items to an NSMutableArray ivar无法将项目添加到 NSMutableArray ivar
【发布时间】:2011-10-30 19:39:30
【问题描述】:

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

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

NSMutableArray *listOfEvents;

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

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

我在日志中得到(null)

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

这有什么问题?尽管我已经阅读了很多次文档,但我似乎无法理解有关数组的一些内容。

【问题讨论】:

标签: objective-c cocoa nsmutablearray


【解决方案1】:

我假设你还没有初始化listOfEvents

确保您在班级的init 方法中使用listOfEvents = [[NSMutableArray alloc] init];。还要确保在您班级的 dealloc 方法中发布它。

【讨论】:

  • 好的,我做了 listOfEvents=[[NSMutableArray alloc] init];在函数体中,所以我只得到运行的值,但只有一个值。它不会一次又一次地添加这个字符串..为什么?
  • 如果您在每个类的实例中多次运行 EventList,那么它将继续将字符串添加到数组中。如果您每次都使用类的新实例运行 EventList,那么数组显然每次也是一个新数组。
  • 谢谢。我无法理解你,每次我按下一个按钮(我使用 cocos2d)我都会调用这个函数。为了一次又一次地添加新值,我必须改变什么?它作为我的类的实例运行。
  • 如果您提出一个新问题,其中包含整个班级的代码以及您从哪里调用它,这将很有帮助。
  • listOfEvents=[[NSMutableArray alloc] init]; 是对的,但是你需要将它移到你班级的init 方法中,所以它只被调用一次。
【解决方案2】:

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

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

在 Objective-C 中,带有void 返回类型的消息发送到nil 转到absolutely-silent nowhere-land.

另外,为了平衡起见,请确保您的 [listOfEvents release] 实现中有一个 [listOfEvents release] 调用。

【讨论】:

  • 非常感谢。我这样做了,但后来我只看到价值跑了。即使我调用它 10 次,也只会出现一个字符串值。
  • 两个小问题:记录nil 打印(null),发送到nilany 消息不执行任何操作,无论方法的返回类型如何。跨度>
【解决方案3】:

显然你没有初始化你的数组。

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

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

【讨论】:

    【解决方案4】:

    你需要allocNSMutableArray。先试试这个 -

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

    在这之后,你可以按照你的计划去做......

    【讨论】:

      猜你喜欢
      • 2012-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-18
      • 2011-08-22
      • 2021-10-17
      • 1970-01-01
      相关资源
      最近更新 更多