gpt4 book ai didi

ios - 静态 NSString 使用与内联 NSString 常量

转载 作者:IT老高 更新时间:2023-10-28 11:41:26 25 4
gpt4 key购买 nike

在 Objective-C 中,我的理解是指令 @"foo"定义了一个常量 NSString。如果我在多个地方使用@"foo",则会引用同一个不可变的 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 * 位?还是我错过了什么?

最佳答案

将文字转换为常量是一种很好的做法,因为:

  1. 如您所说,这有助于避免拼写错误
  2. 如果要更改常量,只需在一处更改即可

我更喜欢使用 static const NSString* static NSString* const,因为它比 #define 稍微安全一些。除非我真的需要它,否则我倾向于避免使用预处理器。

关于ios - 静态 NSString 使用与内联 NSString 常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1937685/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com