在Objective-C中,我的理解是指令@"foo"定义了一个常量NSString。如果我在多个地方使用@"foo",那么同一个不可变的NSString对象会被引用。
为什么我经常看到以下代码片段(例如在UITableViewCell重用中)?
只是:
我猜这是为了防止我在标识符名称上出现拼写错误,而编译器无法捕捉到。但是,如果是这样的话,我不是可以直接使用吗?
避免使用静态NSString *位?还是我漏掉了什么?
为什么我经常看到以下代码片段(例如在UITableViewCell重用中)?
static NSString *CellId = @"CellId";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellId];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:style reuseIdentifier:CellId];
只是:
而不仅仅是:
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CellId"];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:style reuseIdentifier:@"CellId"];
我猜这是为了防止我在标识符名称上出现拼写错误,而编译器无法捕捉到。但是,如果是这样的话,我不是可以直接使用吗?
#define kCellId @"CellId"
避免使用静态NSString *位?还是我漏掉了什么?