0

我是集合编程的新手,所以我遇到了这个问题。任何帮助将不胜感激...

我在类初始化中初始化了一个 NSArray 实例(我已经在头文件中将其定义为该类的属性,因此 ia 必须可以在该类实现中的任何位置访问它)并使用 +(NSArray*) arrayWithObjects: ;. init 方法中的每一件事都很好,但是,......

当我想在更新方法中使用该数组时,应用程序崩溃,因为该数组已DEALLOCATED

为什么那个数组被释放了?我该如何预防?

谢谢 。

4

3 回答 3

2

如果你不使用 ARC,那么你应该用 initWithObjects 初始化它,然后保留它。
如果您使用 ARC,可能它只是一个弱引用。在声明属性时使其成为强引用。

于 2012-12-01T20:47:59.887 回答
1

您应该alloc使用 NSArray 并改用-initWithObjects方法。

NSArray* tempArray = [[NSArray alloc] initWithObjects:(id), ..., nil]

于 2012-12-01T20:37:54.350 回答
1

如果你像这样初始化数组,

objects = [NSArray arrayWithObjects: buttonOne, buttonTwo, 
                                     textField, nil];

它是一种传统的方法,它只是在一次对象访问后自动释放对象。相反,您可以retain使用对象,也可以像这样分配和初始化它

objects = [NSArray alloc] initWithObjects: buttonOne, buttonTwo, 
                                     textField, nil];
于 2012-12-01T20:41:21.333 回答