我是收藏编程的新手,所以我遇到了这个问题。任何帮助将被感谢...
我在类初始化中初始化了一个NSArray实例(我已经将它定义为头文件中该类的属性,因此我必须可以在该类实现的任何位置访问它)并为其分配一些对象
+(NSArray*) arrayWithObjects: ;
。 init方法中的每一件事都很好,但是......
当我想在更新方法app崩溃时使用该数组时,因为该数组 DEALLOCATED 。
为什么该阵列被解除分配?我该如何预防?
谢谢。
答案 0 :(得分:2)
如果你没有使用ARC,那么你应该用initWithObjects初始化它,然后保留它 如果你正在使用ARC,可能它只是一个弱引用。当你声明属性时,它是一个强大的参考。
答案 1 :(得分:1)
您应该alloc
NSArray并改为使用-initWithObjects
方法。
NSArray* tempArray = [[NSArray alloc] initWithObjects:(id), ..., nil]
答案 2 :(得分:1)
如果你正在初始化这样的数组,
objects = [NSArray arrayWithObjects: buttonOne, buttonTwo,
textField, nil];
它是一种常规方法,它只是在对象访问一次后自动释放对象。相反,您可以retain
该对象,或者您可以像
objects = [NSArray alloc] initWithObjects: buttonOne, buttonTwo,
textField, nil];