如何在Objective-C中将对象声明为常量?

时间:2016-04-20 03:41:07

标签: objective-c object compile-time-constant

我发现this question非常好地解释了如何在Objective-C中声明常量NSString或基本类型。该方法运作良好。

最近,我在使用CoreBluetooth编写应用程序时遇到了问题。我想将几个CBUUID保存为常量,因为我会经常使用它们。在这种情况下,FOUNDATION_EXPORT技术失败。

当我把它放在我的头文件

中时
FOUNDATION_EXPORT CBUUID *const _Nonnull kTxPowerServiceUUID;

这在我的.m文件中

CBUUID *const kTxPowerServiceUUID = [CBUUID UUIDWithString:@"1804"];

我收到此错误

  

错误:Initializer元素不是编译时常量。

令我惊讶的是,即使我尝试初始化 的对象是 编译时常量,我也会收到此错误。例如,我在我的应用程序中有几个计算涉及以米/秒为单位的光速。我尝试创建一个常量NSNumber来表示它。我试过这个时

NSNumber *const kTheSpeedOfLight = @(299792458);

我收到了同样的错误,并将kTheSpeedOfLight声称为unsigned int

那么有没有办法从对象中创建常量?或者它仅适用于原语和NSString的?

0 个答案:

没有答案