我已经看到很多答案来定义常量,只需在.h文件中使用extern int const Something
和在.m文件中使用int const Something = 1
。
但问题是 - 这些不是类常量,我不能用它们。使用符号或使用其他机制来区分拥有的类。
例如,
ClassA.h
extern int const SomeErrorCode;
ClassB.h
extern int const SomeErrorCode;
然后我有ClassC.m,我想同时使用ClassA和ClassB并检查它们的方法错误代码:
#import <ClassA.h>
#import <ClassB.h>
@implementation ClassC
-(void)doIt
{
ClassA * objA = [[ClassA alloc] init];
ClassB * objB = [[ClassB alloc] init];
int resultA = [objA doSomething];
// how do I check for resultA == ClassA.SomeErrorCode ?
int resultB = [objB doSomething];
// how do I check for resultB == ClassB.SomeErrorCode ?
}
@end
如果ClassA.SomeErrorCode和ClassB.SomeErrorCode具有不同的值,我如何确保我可以使用这两个类并且没有冲突?
答案 0 :(得分:1)
如果您不需要在文件之外引用常量,那么请不要在.h文件中声明它们。如果没有这些声明,它们就不会被链接器看到,并且没有名称冲突。
如果您确实需要在其他模块中显示常量,那么您需要为它们组成全局唯一的名称。