静态常量Vs定义指令
问题描述:
我想在我的.m文件中定义一个常量。我可以在这里看到两种选择:静态常量Vs定义指令
static NSString *const kMyLabel = @"myLabel";
#define kMyLabel @"myLabel"
哪一个是最好的?在这里使用static有任何问题吗?
答
唯一的区别是,你可以把变量的地址,而你不能接受一个常量字符串表达式的地址(这是宏减少到)。如果可能,我宁愿避免#define
,所以我会选择前者,但这只是一个风格问题。
答
从使用的角度来看,大部分情况并不重要。但是使用静态方法有一个小优点,即代码中常量的每个用法都是指向完全相同对象的指针(大多数情况下),而#define
方法将创建该字符串的副本。我相信在最近的编译器中,它足够智能地将defines
作为一个对象,但为了安全起见,我只是使用static
方法。
+1
都不会创建字符串的副本。常量字符串在编译单元中是唯一的。 – Chuck 2011-01-24 20:59:37
明白了。谢谢! – Abhinav 2011-01-24 21:53:50