我发现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
的?