NSMutable Array将不会分配,仍然为零

问题描述:

XML解析器试图分配其委托的NSMutable数组,名为masterCodeList。从下面的代码中,你会看到这个失败。 (我是新手)NSMutable Array将不会分配,仍然为零

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" 

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

在此先感谢。

+0

你使用ARC吗?在你的dataController对象中如何定义“masterCodeList”? –

+6

是dataController nill? – rooster117

+0

此外,为什么你的底层(子)XML解析器试图分配你的委托(可能是父类的“masterCodeList”。为什么委托没有这样做? – trumpetlicks

你的masterCodeList声明是什么样的? 它是一个属性,它是合成的,还是你自己创造了一个setter/getter?

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

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

,看看是否正确设置你的阵列。

(注:即代码可能会或可能不会有泄漏)

+0

这是一个属性: 财产(非原子,副本)的NSMutableArray * masterCodeList; ,它是合成的!?! 合成masterCodeList = _masterCodeList ; 我以前试过一个临时数组,它没有工作(我会再试一次)。我也试过这个,它不工作: [dataController setMasterCodeList:[[N SMutableArray alloc] init]]; – AlexMath

你可以张贴在这个类你对DataController类对象的实现,并从其他类的属性?

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

+0

如果它是一个指针,那么使用isEqual方法会为您做什么? ==应该很好。当然,如果你真的想成为一个合法的C风格程序员,你可以这样做(!dataController.masterCodeList) – Jarsen