【发布时间】:2010-12-28 14:30:01
【问题描述】:
在 Objective-C 中,我的理解是指令 @"foo" 定义了一个常量 NSString。如果我在多个地方使用@"foo",则会引用同一个不可变的 NSString 对象。
为什么我经常看到这个代码sn-p(比如在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 * 位?还是我错过了什么?
【问题讨论】:
-
这也保证指针相等可以给你一些性能优势。据我所知,宏符号没有保证。
标签: ios objective-c nsstring