滚动动态TableView(iOS)时不再初始化全局变量

时间:2012-07-19 14:27:26

标签: ios uitableview

我有一个用NSArray填充的UITableView。不幸的是,这个数组不断改变大小和内容。所以我想创建该数组的全局单个副本(在某个时间点)并使用它来填充我的表。

这就是我正在做的事情:

·H

@interface TableViewController : UITableViewController {
//    ProcessListArrayHolder *processListArrayObject;

    NSArray *_myArray;
}

...

@property(nonatomic,strong) NSArray *myArray;

的.m

@synthesize myArray = _myArray;

// in ViewDidLoad
_myArray = [myObject myFunctionThatReturnsAnArray]; //This function returns a different array every time because the data is constantly changing

然而,当我滚动时,看起来_myArray是空的,我得到一个“Bad Access”试图从中获取一个值。

滚动时TableView正在做什么? 有没有办法让它一次加载整个表?

编辑:为了解决这个问题,我只使用了属性“myArray”,将其称为“self.myArray”,并忽略了_myArray。

1 个答案:

答案 0 :(得分:1)

首先,您应该使用生成的setter(这就是它的用途)

self.myArray = [myObject myFunctionThatReturnsAnArray]; 

首先在哪里初始化该数组?

您的cellForRowAtIndexPathnumberOfRowsInSection代码是什么样的?如果您有正确初始化的阵列并正确设置委托功能,则永远不会收到错误的访问权限。滚动时,表视图使用其代理来填充和显示当时所需的单元格。