결함있는 헤더 파일에 대해 불평하는 Clang 제공 오류 uilocalizedIndexEdCollation.h

StackOverflow https://stackoverflow.com/questions/1078001

  •  21-08-2019
  •  | 
  •  

문제

Clang으로 코드를 작성할 때이 오류가 발생했습니다.

In file included from /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIKit.h:31,
                 from /Users/waspfish/Documents/NanaimoStudio/Projects/iPhoneMonk/Projects/IdeaOrganizer/IdeaOrganizer_Prefix.pch:13,
                 from :1:
/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UILocalizedIndexedCollation.h:13: error: syntax error before ‘AT_NAME’ token
/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UILocalizedIndexedCollation.h:21: error: syntax error before ‘}’ token
/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UILocalizedIndexedCollation.h:23: fatal error: method definition not in @implementation context
compilation terminated.
{standard input}:32:FATAL:.abort  detected.  Assembly stopping.

나는 Uikit.h에서 uilocalizedindexedcollation.h를 배제해야했고 모든 것이 잘 만들어졌습니다. 문제를 일으킬 수있는 것이 무엇인지 아십니까? Apple이 결함이있는 헤더 파일을 배송한다고 상상할 수 없습니다.

도움이 되었습니까?

해결책

문제는 이제 GCC 4.2를 사용하는 SDK 3.0에서 나옵니다. 그러나 스캔 빌드는 여전히/usr/bin/gcc를 사용합니다. 따라서 scan-build에 대신 /usr/bin/gcc-4.2를 사용하도록 지시해야합니다.

scan-build --use-cc=/usr/bin/gcc-4.2 xcodebuild -configuration Debug

ET Voila!

다른 팁

Apple의 엔지니어는 Uikit 프레임 워크에 버그가 있음을 확인했습니다.

이 Uikit 버그에 대한 간단한 해결 방법이 있습니다. UilocalizedIndexEdCollation.H 변경에서 다음과 같습니다.

UIKIT_EXTERN @interface UILocalizedIndexedCollation : NSObject
to
UIKIT_EXTERN_CLASS @interface UILocalizedIndexedCollation : NSObject 

DENIS2342

보통 이와 같은 것을 볼 때 빌드를 청소하고 Xcode를 다시 시작하면 상황이 괜찮 았습니다. GCC 4.2를 사용하면 때때로 나쁜 PCH가 이와 같은 딸꾹질을 촉진 할 수 있지만 Clang은 다른 PCH 구현을 사용합니다. Xcode가 실행되지 않는 동안 T DIR을 완전히 삭제할 수 있습니다.

기술적으로 Clang은 iPhone 개발에 지원되지 않지만 시뮬레이터 컴파일에 사용하고 있으며,보고있는 컴파일 오류는 보이지 않으므로 (적어도 나에게는) 작동합니다. 내 머리에 한 가지가 튀어 나옵니다. 당신은 당신의 uikit.h를 편집하는 것을 말합니다. 나는 당신이 한 일을 이해하지만 시스템 헤더를 조정하는 것은 큰 일입니다. 재고 헤더를 실행하지 않으면 여러 가지 이유가 발생할 수 있기 때문에 다른 이유로 그렇게 할 가능성이 있습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top