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 回答