2012-10-29 4 views
0

상수를 저장하는 클래스가 있습니다.상수 추가 문제 Xcode 4.5

#import <Foundation/Foundation.h> 

enum kParams { 
    kFirstName = 0, 
    kLastName = 1 
}; 

extern NSString * const kNotificationUpdateMainMenu; 

이 내가하는 .m 파일에있는 것입니다 :

그래서, Constant.h 및 Constant.m

전화 두 개의 파일이이 내가 .H 파일에 무엇을 가지고 있습니다 :

#import "Constants.h" 

NSString * const kNotificationUpdateMainMenu = @"kNotificationUpdateMainMenu"; 

는 처음으로이 잘 작동하지만, 내가 다른 CONST (예를 들어 kNotificationFbLoginSuccsess)를 추가하려고하면 다른 클래스가 표시되지 않습니다.

이 메시지는 내가 가지고있는 문제점을 알려줍니다. 그러나 나는이 문제없이 다른 상수가 어떻게 작동하는지 이해하지 못한다.

  • 열기 주최자
  • 지우기 파생 데이터
  • 삭제 project.xcworkspace 파일과 xcuserdata
  • 프로젝트 닫기
  • 다시 시작의 엑스 코드 :

    /Users/developer/Documents/Projects/Test/Test/Test/AppDelegate.m:121:64: Use of undeclared identifier 'kNotificationFbLoginSuccsess' 
    

    나는 몇 가지를 해결하는 방법을 방법을 발견

하지만 너무 많은 작업을 통해 하나의 상수를 추가 할 수 있다고 생각합니다. 어째서?

+0

우리는 조금 다른 것을하고 있습니다. #define marcos와 .h 파일 (그냥 헤더)을 사용하고 있습니다. 매우 매끄럽게 작동합니다. – LordT

+0

예 매크로 정의는 매우 좋지만 데이터 유형에 문제가 있으면 해결되지 않습니다 (예 : string 또는 int 또는 다른 것을 사용하는 경우). 그리고 제 경우에는 모든 외부 상수가 잘 작동하지만, 비용을 더 추가하려고하면이 오류가 발생합니다. 하지만 다른 const 작업을 잘하고 Xcode 파서가 어떤 문제없이 그것을보고 있기 때문에 궁금하네요. –

+1

'성공'의 철자를 '성공'으로 지으셨습니까? 네 문제 일까? – trojanfoe

답변

1

"전역"상수는 실제로 외부 (개별적으로 컴파일되고 나중에 링크 됨)가 아닙니다. 쉬운 길을 타고 NSString * const kNotificationUpdateMainMenu = @"kNotificationUpdateMainMenu";을 헤더 파일에 넣으십시오. 메소드 파일에는 아무 것도 필요하지 않습니다.

나는 #define kNotificationUpdateMainMenu @"kNotificationUpdateMainMenu"을 사용하여 맞춤법 검사를 수행 할 것입니다. 컴파일러는 전체 컴파일에 대한 상수 문자열의 하나의 공유 인스턴스를 만듭니다.