4

非常に興味があります。提供された AppleUITableViewDataSourceメソッドtableView:cellForRowAtIndexPath:では、セル識別子に使用される静的変数に指定された名前NSStringは、次のように常に大文字になります。

- (UITableViewCell *)tableView: (UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"TableViewCell";  // CAPITALISED VARIABLE NAME
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: CellIdentifier];

    // Configure cell

    return cell;
}

実行時にプログラムに違いがないことはわかっていますが、Objective-C の命名規則では、変数の最初の文字は小文字にし、クラスの名前は大文字にする必要があります。なぜこれがここに当てはまらないのですか?

4

2 に答える 2

3

最初の文字を大文字にすることは、CellIdentifierが定数であることを示すために使用されます。

さて、あなたは不思議に思うかもしれません、なぜあなたはこれをすることができないのですか...

static const NSString *cellIdentifier = @"TableViewCell";

答えは、constがプログラマーが期待するようにNSStringで機能しないためです。NSStringの文字列値は、constとしてマークされていても変更できるため、次の一連の式...

static const NSString *cellIdentifier = @"TableViewCell";
cellIdentifier = @"Changed!"
NSLog(@"%@", cellIdentifier);

「変更されました!」をログに記録します 「TableViewCell」ではなく、コンソールに送信します。このため、大文字はCellIdentifierが定数であることを示すために使用されますが、技術的には変更できますが、変更することは「想定されていません」。

于 2012-07-30T14:56:20.647 に答える
1

ここでのセル識別子は事実上定数であり、慣例により大文字で表記されます

于 2012-07-30T14:51:52.090 に答える