【问题标题】:NSMutable Array won't alloc, remains nilNSMutableArray 无法分配,保持为零
【发布时间】:2012-06-01 21:17:57
【问题描述】:

XML 解析器正在尝试分配其委托的 NSMutable 数组,名为 ma​​sterCodeList。从下面的代码中,你会看到这失败了。 (我完全是新手。)

if (dataController.masterCodeList == nil){

    dataController.masterCodeList =[[NSMutableArray alloc] init];
    if (dataController.masterCodeList == nil) {
        NSLog(@"the init of the mutable array did NOT work");
    }
}

我每次都会收到the init of the mutable array did NOT work 消息。我正在导入 dataController 标头。

#import "CodeDataController.h"

我没有收到其他错误消息,解析器解析正常,应用程序运行平稳,没有内容。

提前致谢。

【问题讨论】:

  • 您在使用 ARC 吗?您的 dataController 对象中如何定义“masterCodeList”?
  • dataController 是空的吗?
  • 另外,为什么您的较低级别(子)XML 解析器试图分配您的委托(可能是父母的“masterCodeList”。为什么委托自己不这样做?
  • 我在解析器的接口中声明了 CodeDataController *dataController。够了吗?
  • dataController 为空!我该怎么办?

标签: ios xcode nsmutablearray alloc


【解决方案1】:

您对 masterCodeList 的声明是什么样的? 它是一个属性,它是合成的,还是你自己制作 setter/getter?

另一种方法是尝试使用中间占位符,即:

NSMutableArray *temp = [[NSMutableArray alloc] init];
[dataController setMasterCodeList:temp];

看看这是否正确设置了你的数组。

(注意:该代码可能有泄漏,也可能没有泄漏)

【讨论】:

  • 它是一个属性:property (nonatomic, copy) NSMutableArray *masterCodeList;并合成:synthesize masterCodeList=_masterCodeList;我之前尝试过一个临时数组,但它不起作用(我会再试一次)。我也试过这个,但没有用:[dataController setMasterCodeList:[[NSMutableArray alloc] init]];
【解决方案2】:

您能否在此类中发布您对 dataController 对象的实现,以及其他类中的属性?

您可能还想尝试使用 isEqual 方法而不是 == nil。

【讨论】:

  • 如果它是一个指针,那么使用 isEqual 方法对你有什​​么作用? == 应该没问题。当然,如果你真的想成为一个合法的 C 风格程序员,你可以这样做 if(!dataController.masterCodeList)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-03
  • 2013-09-12
  • 1970-01-01
  • 2012-07-12
  • 1970-01-01
相关资源
最近更新 更多