1

UITableViewにNSArrayが入力されています。残念ながら、この配列は常にサイズと内容を変更しています。そのため、その配列のグローバルな単一コピーを(ある時点で)作成し、それを使用してテーブルにデータを入力したいと思います。

これは私がしていることです:

.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を無視しました。

4

1 に答える 1

1

まず第一に、おそらく生成されたセッターを使用する必要があります(そのためにあります)

self.myArray = [myObject myFunctionThatReturnsAnArray]; 

そもそもその配列をどこで初期化しますか?

あなたcellForRowAtIndexPathnumberOfRowsInSectionコードはどのように見えますか? 適切に初期化された配列があり、デリゲート関数を適切に設定していれば、不正なアクセスを受けることはありません。スクロールすると、テーブル ビューはデリゲートを使用して、その時点で必要なセルだけを入力して表示します。

于 2012-07-19T14:40:57.427 に答える