2012-07-19 43 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