我正在使用Constants.h文件来保存我的所有值。我宣布这样:
static NSString *NAME = @"Name";
static NSString *MAILID = @"Mail-id";
static NSString *ADDRESS = @"Address";
我也在代码中使用此密钥。但它始终显示警告未使用的变量" NAME"
如果我采取
const NSString *NAME = @"Name";
然后显示错误。所以,任何人都可以帮助我,我该如何解决这个警告?
谢谢:)
答案 0 :(得分:2)
在C中,因此在Objective-C中,static
是具有文件级范围的变量。 #import
和#include
都与将头文件的文本复制并粘贴到源文件中具有相同的效果。因此,对于static
,包含标题的每个文件都会获得自己的符号NAME
,MAILID
等的个人副本。如果您不使用它,编译器将因此警告您
const
表示不变。如果在星号之前使用,那么它意味着一个常量NSString
,它没有很多语义意义,因为NSString
是一个不透明的类型。如果您只使用const
,那么您还要让包含标题的每个文件重新声明变量。所以你会得到一个错误。
标题中您可能想要的是:
extern NSString *const NAME;
那说:(i)estern
- 不是在这里,而是在另一个单位;和(ii)NSString *const
- 它是指向NSString
的指针,指针内的地址永远不会改变。
然后在任何单个实现文件中添加:
NSString *const NAME = @"NAME";
否则每个编译单元都会坐下来并期望其中一个编译单元定义它。因此,您将收到链接器错误,该符号未定义。