1

これはおそらく非常に単純な質問ですが、これを正しく行う方法について少し混乱しています。このコード行を削除する必要があることを読みました。

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

しかし、セルがnilでないかどうかを確認するにはどうすればよいですか? 私が使用する完全なコードは以下のとおりです。誰かがこの行の目的を説明することもできれば:

static NSString *CellIdentifier = @"Cell";

コード全体:

static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
}
4

1 に答える 1

4

投稿したコードで正しく使用しています。static 型修飾子を使用する理由は、メソッドが呼び出されるたびに変数が作成および初期化されるのを防ぐためです。「通常の」変数は、各メソッドで自動的に作成および削除されます。実際にこれを行うことができます。

auto NSString* cellId = @"CellId";

型修飾子はデフォルト (コンパイラーが追加) であり、auto入力を節約するためにユーザーは追加しません。型の前に置くことstaticで、この動作を変更して、プログラムの開始時に変数が 1 回だけ初期化されるようにします。メソッドが呼び出されるたびにstatic、型修飾子を持つ変数のデータがスタックから自動的に削除されないため、呼び出されます...静的/変更されません。staticしたがって、名前。

セルIDを何度も使用しているため、メソッドが呼び出されるたびに変数を作成/削除するのではなく、一度だけ初期化する方がパフォーマンスがわずかに向上します。これは、多数のセルを含むテーブルに特に当てはまります。autoただし、使用と変数の違いを見たことはありませんstaticが、少なくともその背後にある考え方です。

行を削除することは想定されていません[tableView dequeueReusableCellWithIdentifier:CellIdentifier];。テーブルビューからテーブルビューセルをデキューできるようにする必要があります。

于 2012-06-25T10:53:10.820 に答える