.h 파일에 extern int const Something
, .m 파일에 int const Something = 1
을 사용하여 상수를 정의하는 방법에 대한 답을 많이 보았습니다.명명 충돌이없는 클래스 상수
하지만 문제는 - 클래스 상수가 아니며이를 사용할 수 없다는 것입니다. 표기법을 사용하거나 다른 메커니즘을 사용하여 소유 클래스를 구별합니다. 예를 들어
,ClassA.h
extern int const SomeErrorCode;
ClassB.h
extern int const SomeErrorCode;
다음 나는를 ClassA와 ClassB가 모두 사용하고 확인하려면 어디 ClassC.m이 자신의 메소드 오류 코드 :
#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의 값이 다른 경우에 대비하여 두 클래스를 모두 사용할 수 있고 충돌이 없도록하려면 어떻게해야합니까?
'extern'을 사용하면 접두사 (예 : 클래스를 만들 때와 같이)를 사용하고 정의 된 클래스에 연결하는 이름을 지정하고 const 일 경우 "k"를 사용합니다. 그들은 정적이다. 'extern int const kAFMyClassAErrorCode'와 마찬가지로 – Larme
왜 그들이'TextDidChange'가 아니라'UITextFieldTextDidChangeNotification'라는 이름의 상수인지 궁금합니까? – Sulthan
예, 그러면 "yack, Objective-C는 지저분 해"라고 생각하게되었습니다. 나는 다른 청소기 옵션이 없다면 그때 익숙해 져야 할 것 같아요. – JustAMartin