没有命名冲突的类常量

时间:2017-01-23 16:32:49

标签: objective-c class constants collision naming

我已经看到很多答案来定义常量,只需在.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具有不同的值,我如何确保我可以使用这两个类并且没有冲突?

1 个答案:

答案 0 :(得分:1)

如果您不需要在文件之外引用常量,那么请不要在.h文件中声明它们。如果没有这些声明,它们就不会被链接器看到,并且没有名称冲突。

如果您确实需要在其他模块中显示常量,那么您需要为它们组成全局唯一的名称。