【问题标题】:NSMutableArray is empty after addObjectaddObject 后 NSMutableArray 为空
【发布时间】:2012-09-05 13:39:12
【问题描述】:

我想在 NSMutableArray 中添加一个对象:

NSLog(@"Object text: %@", object.text);
NSLog(@"Object: %@", object);
[appdelegate.objects addObject:object];
NSLog(@"Objects array size: %i", [appdelegate.objects count]);

这是输出:

Object text: This is the text
Object: <Object: 0x6e762c0>
Objects array size: 0

这怎么可能,我添加了一个对象,在下一行,它仍然是空的。 NSMutableArray 不是 nil,因为这会引发异常。

有人猜吗?

【问题讨论】:

    标签: objective-c ios nsmutablearray


    【解决方案1】:

    如果是nil,它不会引发异常。如果nil 对象通常会响应该消息,您仍然可以向它发送消息。在这种情况下,您只会得到 0。我认为您没有分配数组。确保你这样做:

    array = [[NSMutableArray alloc] init];
    

    作为调试提示,如果您不确定对象的状态并希望确保该对象确实存在并且可以使用,请使用 assert(appdelegate.objects); 如果数组为 nil,您的代码将停止执​​行在这条线上。如果它没有停在这一行,那么您就知道该对象存在于内存中。

    【讨论】:

    • 确实为空。使用了一个演示示例,它也没有分配/初始化数组,但这是一个工作示例。这怎么可能行得通?
    • @TomWebDev 嗯,它不可能工作。它必须被分配到某个地方,也许代码很难被发现。你有这个例子的链接吗?
    • 可能数组是用arrayWithCapacity 创建的?因为这样你就找不到数组的任何分配了。
    • @mohabitar 啊,你又是对的,但它被分配在另一个类中。我认为这很奇怪,但也许这只是我的 Java 背景。 :) 谢谢你的协助!编辑:顺便说一下本教程:buildmobile.com/parsing-xml-files-with-objective-c/…
    【解决方案2】:

    您的 NSMutableArray 确实几乎可以肯定是空的。它不会引发异常,因为在 ObjC 中向 nil 发送任何消息都是无操作的,并且会像您看到的那样运行,返回值为零或 nil 等。

    尝试记录它以仔细检查。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-25
      • 2010-12-22
      • 2011-04-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多