2012-07-19 47 views
1

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

这是我在做什么:

.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是空的,我也得到试图从中获得价值的“不良访问”。

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

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

回答

1

首先,你或许应该使用生成的制定者(这就是它的存在)

self.myArray = [myObject myFunctionThatReturnsAnArray]; 

你在哪里初始化摆在首位的是数组?

你的cellForRowAtIndexPathnumberOfRowsInSection代码是什么样的?如果你有一个正确初始化的数组并正确设置了委托函数,你永远不会收到一个错误的访问。在您滚动时,表格视图正在使用其代表来填充并显示当时所需的单元格。

+1

访问self.myArray而不是使用_myArray,并且转移一些东西似乎有伎俩! – Orchid 2012-07-19 19:13:15