2012-01-06 4 views
3

두 파일 사이에 const 값을 공유해야합니다. 그래서 마법의 숫자를 유지하기보다는 나는 const 변수를 사용하기로 결정했습니다.객관적인 C의 extern; 그들은 C와는 다르게 행동합니까?

Undefined symbols for architecture i386: 
"viewTag", referenced from: 
    -[xxxViewController launchxxx] in libxxx_iPad.a(xxxViewController.o) 
ld: symbol(s) not found for architecture i386 
collect2: ld returned 1 exit status 

그러나 위의 것은 C++ ENV 정상적인 C, 완벽 leagal입니다 : 그래서 나는 그런 extern const int viewTag;로 액세스하지만 난 링커 오류 다음 가지고 내 appDelegate.mglobal 변수 const int viewTag = 100;를 만들었습니다. 아무도 빛을 낼 수 없나요?

업데이트 : 헤더에 extern const int viewTag; 넣고 그 헤더 작품을 가져,하지만 난 정말 하나의 const int

+1

원하는 위치

하지만 내가 생각하는 가장 좋은 방법은 상수 .H 파일을 만들고 포함하는 것입니다? 어쨌든, 변수가 viewTag이라면, 왜 애플 리케이션 위임 (delegate)에있는 것일까 요? 그것은보기 컨트롤러 (또는 이상적으로 IBOutlet 및 xib를 사용하여 연결)로 정의해야합니다. – deanWombourne

+0

안녕하세요 @deanWombourne, 최상위/바람직한보기에 암호 화면을 표시하고 싶습니다. 'viewTag'는 제가 그렇게하도록 도와줍니다. –

+0

뷰 태그가 필요없이 itsef를 렌더링하는 방법을 알고있는 암호 코드 화면 인 UIView 하위 클래스를 만들 수 있습니까? – deanWombourne

답변

2

퍼팅 시도 그렇게하고 싶지 않은 : appDelegate.h에서

extern const int viewTag; 

,이 가져 오기 헤더 어디로 viewTag에 액세스해야합니다.

+0

글쎄, 미안 나는 제안한 작품에 대해 언급하는 것을 잊어 버렸고, 실제로 내가 현재 한 일이다. 그러나 나는 단지 하나의'const int'에'.h'를 임포트하고 싶지 않습니다. –

+0

예. 당신은 글로벌 목적의 물건을 만들기 위해 extern을 사용하는 것이 객관적인 스타일이라는 것을 종종 알 수 있습니다. 많은 애플 헤더에서 extern을 찾을 수 있습니다. – petert

2

또 다른 방법은 .pch 파일에서 #define viewTag 100을 사용하는 것입니다. 당신은 내가 컴파일러가 링커에 그 노출 알려줍니다 앱 위임의 .H 파일로 넣어 같아요

+0

.pch 파일에있을 필요는 없습니다. –

+0

하지만,'.pch'를 사용하는 것은 좋지 않습니다; 작은 프로젝트는 괜찮지 만 100 MB의 소스 코드가 있다면'.pch' 한 줄을 변경하면 모든 응용 프로그램이 다시 컴파일됩니다 ;-( –

+0

가장 좋은 방법은 상수가있는 .h 파일을 만들고 필요. – Igor

관련 문제