静态库中的全局常量在运行时为零

时间:2014-06-11 18:24:36

标签: ios objective-c

我有一个静态库,其中包含一些常量,例如:

    // constants.h
    NSString* const KDefaultProtocol;

    // constants.m
    NSString* const kDefaultProtocol = @"https";

    // OtherCode.m
     NSString *s = kDefaultProtocol;

当我运行链接到库的应用程序时,kDefaultProtocol的值为nil。这是为什么?

(constants.m包含在库编译源代码部分中)。

2 个答案:

答案 0 :(得分:5)

// constants.h
NSString* const KDefaultProtocol;

这个不正确。你的意思是:

// constants.h
extern NSString* const KDefaultProtocol;

你没有收到警告的原因是因为你使用了不匹配的K的情况(提出了OtherCode.m甚至编译的问题;我怀疑这是不完全是有问题的代码。)

答案 1 :(得分:0)

试一试 - >

// constants.h
static NSString * const KDefaultProtocol = @"https";