加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

objective-c – 带#define的常量字符串数组 – objective c

发布时间:2020-12-16 10:31:30 所属栏目:百科 来源:网络整理
导读:我需要一个常量的字符串数组.使用#define是个好主意? 例如: #define rows [NSArray arrayWithObjects: @"NameRowA",@"NameRowB",@"NameRowC",nil]#define KEY_ROWA [columnas objectAtIndex:0]#define KEY_ROWB [columnas objectAtIndex:1]#define KEY_ROW
我需要一个常量的字符串数组.使用#define是个好主意?

例如:

#define rows [NSArray arrayWithObjects:  @"NameRowA",@"NameRowB",@"NameRowC",nil]


#define KEY_ROWA [columnas objectAtIndex:0]
#define KEY_ROWB [columnas objectAtIndex:1]
#define KEY_ROWC [columnas objectAtIndex:2]

我需要访问字符串数组和该数组的元素.

我已经读过了,(我不知道是不是真的)用这种方式创建一个新的NSArray,当它被使用时,我想这个数组就被释放了,所以我认为这很好,因为你只使用那部分内存什么时候需要它.

解决方法

我认为你不想使用#define.

在您的示例中,没有使用此代码生成的常量字符串数组.在您的代码中使用每一个时间行,将分配一个新的NSArray.此外,KEY_ROWA引用了columnas,但这不在行的define中.我猜你有类似的东西

NSArray *columnas = rows;

这和之间确实没有什么区别

NSArray *columnas = [NSArray arrayWithObjects: @"NameRowA",nil];

但第二行更为明显. KEY_ROWA也是如此 – objectAtIndex调用会更明显,宏不会给你任何东西.

我不确定你需要什么,但是如果你需要一个类中的共享常量字符串数组,你可以将它声明为 – 而不是 – 在开头,并分配一次(这是一个类变量,而不是一个实例变量).更多信息:

How do I declare class-level properties in Objective-C?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读