我是集合编程的新手,所以我遇到了这个问题。任何帮助将不胜感激...
我在类初始化中初始化了一个 NSArray 实例(我已经在头文件中将其定义为该类的属性,因此 ia 必须可以在该类实现中的任何位置访问它)并使用
+(NSArray*) arrayWithObjects: ;
. init 方法中的每一件事都很好,但是,......
当我想在更新方法中使用该数组时,应用程序崩溃,因为该数组已DEALLOCATED。
为什么那个数组被释放了?我该如何预防?
谢谢 。
我是集合编程的新手,所以我遇到了这个问题。任何帮助将不胜感激...
我在类初始化中初始化了一个 NSArray 实例(我已经在头文件中将其定义为该类的属性,因此 ia 必须可以在该类实现中的任何位置访问它)并使用
+(NSArray*) arrayWithObjects: ;
. init 方法中的每一件事都很好,但是,......
当我想在更新方法中使用该数组时,应用程序崩溃,因为该数组已DEALLOCATED。
为什么那个数组被释放了?我该如何预防?
谢谢 。
如果你不使用 ARC,那么你应该用 initWithObjects 初始化它,然后保留它。
如果您使用 ARC,可能它只是一个弱引用。在声明属性时使其成为强引用。
您应该alloc
使用 NSArray 并改用-initWithObjects
方法。
NSArray* tempArray = [[NSArray alloc] initWithObjects:(id), ..., nil]
如果你像这样初始化数组,
objects = [NSArray arrayWithObjects: buttonOne, buttonTwo,
textField, nil];
它是一种传统的方法,它只是在一次对象访问后自动释放对象。相反,您可以retain
使用对象,也可以像这样分配和初始化它
objects = [NSArray alloc] initWithObjects: buttonOne, buttonTwo,
textField, nil];