FOUNDATION_EXPORT 或#define 或 extern

//我的.h文件

FOUNDATION_EXPORT NSString * const kMyConstantString;  
FOUNDATION_EXPORT NSString * const kMyConstantString2;


//.m文件是这样定义的

NSString * const kMyConstantString = @"Hello";
NSString * const kMyConstantString2 = @"World";

//还有一种是常用的#define方法了
#define kMyConstantString @"Hello"

应该使用FOUNDATION_EXPORT还是#define来定义常量?


区别:

使用第一种方法在检测字符串的值是否相等的时候更快.

对于第一种你可以直接使用(stringInstance == MyFirstConstant)来比较,

而define则使用的是这种.([stringInstance isEqualToString:MyFirstConstant])

哪个效率高,显而易见了.

第一种直接比较的是指针地址,

而第二个则是一一比较字符串的每一个字符是否相等.

来源地址:点击打开链接




//TTGClass.h
extern NSString * const TTGClassWorkBeginNotification;

//TTGClass.m
NSString * const TTGClassWorkBeginNotification = @"TTGClassWorkBeginNotification";


k”开头的命名,也算是Apple的规范了吧,内部常量统一以“k”开头。



关键:

  • 头文件中只是做声明,不做定义。所以用extern表示常量在别处定义的,尽量隐藏细节。
  • 同类名做常量名字的开头,这个非常关键,因为Objective-C里面没有像Java那样的“包”机制,所以必须靠命名来划分不同的类,常量当然也要遵循这个规则。
  • NSString,确定的类型;const,表明常量;Notification后缀,表明用途。这些都是需要注意的。


备注:2015年10月29日修改

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值