2012-07-10 2 views
1

즉, 리터럴을 사용하지만 iOS 5를 타겟팅하십시오.LLVM 4.0을 Xcode 4.3에서 사용할 수 있습니까?

나는 this을 알고 있지만 그 결론은 결정적이지 않습니다.

+0

적어도 두 개의 게시물이 있습니다.이 게시물은 내가 링크 한 게시물과 http://stackoverflow.com/questions/11361180/using-new-objective-c-literals?lq=1입니다. 더 중요한 것은, [Xcode 4.1에서 LLVM 3을 사용할 방법이 있습니까?] (http://stackoverflow.com/questions/7361824/is-there-any-way-to-use-llvm-3)에서 해결책을 시도해 보셨습니까? -in-xcode-4-1)? –

+0

Mac 개발자 프로그램에 액세스 할 수 있으면 Xcode 4.4 GM을 지금 다운로드 할 수 있습니다. 그렇지 않으면 며칠 후에 iOS5 코드 용 리터럴을 사용할 수 있습니다. –

+0

Xcode 4.1에서 LLVM 3을 사용할 방법이 있습니까? Xcode 4.3에서 어떤 컴파일러가 사용되는지에 차이가 없습니다. –

답변

22

컴파일러를 전환 할 수 있지만 생각했던대로 작동하지 않습니다 (지금 시도했습니다). 이 새로운 구문을 사용하기위한 컴파일 SDK에 대한 몇 가지 요구 사항이 있습니다 (예 : 이전 iOS 버전에서는 작동하지만 iOS 6.0 SDK로 컴파일해야 함). 나는 그들이 지금 여기에서 토론 할 수 있다고 생각하지 않지만, "Modern Objective-C"WWDC 2012 비디오에서 자세히 다루어집니다.

기본적으로, 당신은 구문을해야하지만 라이브러리가 응답하는 방법을 알 수 없습니다.

다른 이론은 그냥 ^^ 바로 그것을하지 않았다 ...하지만이있다;

결국, 이 없어서 5.x 앱에 배포하려면 4.3을 사용해야합니다. 그래서 내 제안은 단지 업그레이 드입니다, 거기에 진짜로 단점 (당신이 곧 애플 리케이션을 배포하지 않는 한,하지만 그 경우에는 거의 모든 일을 끝났다고 가정 이후 모든 것을 변환하는 번거 로움 것입니다).

EDIT (2 개월 후 현재 iOS 6 공개). 범주를 사용하여 새로운 목표 인 SDK 리터럴 구문에 대한 SDK 요구 사항을 해결할 수 있습니다. NSArrayNSDictionary- (id)objectAtIndexedSubscript:(NSUInteger)idx- (id)objectForKeyedSubscript:(id)key의 카테고리를 각각 추가하면 objectAtIndex:objectForKey: (이는 iOS 6에서하는 것과 동일 함)을 반환합니다. NSMutableArrayNSMutableDictionary에 대해서도 객체가없는 경우 객체를 추가하고 존재하는 경우 객체를 단순히 추가하는 - (void)setObject:(id)obj atIndexedSubscript:(NSUInteger)index- (void)setObject:(id)obj atIndexedSubscript:(NSUInteger)index의 범주 메서드를 각각 추가하십시오.

하나의 캐치 : 및 NO의 정의가 iOS 6에서 부울 리터럴 NSNumber에 맞게 변경되었습니다. 그래서 다음을 수행해야합니다

#if __has_feature(objc_bool) 
#undef YES //Before it was (BOOL)1 
#undef NO //Before it was (BOOL)0 

#define YES __objc_yes 
#define NO __objc_no 
#endif 

이유는 새 구문에 이미 오류입니다 @(BOOL)1에 해결하는 것이다 @(...) 구문 (박스 표현)하고 기존 정의에 대한 정의를 가지고 있다는 것입니다.

+0

비디오는 공개되어 있습니다. 그 내용을 논의하지 않을 이유가없는 것 같습니다. 새로운 구문 자체도 public입니다 : http://clang.llvm.org/docs/ObjectiveCLiterals.html, 그래서 당신은 아마도 "Foundation 객체의 현재 버전은'objectAtIndexedSubscript :를 구현하지 않습니다. 행동 양식". –

+0

@JoshCaswell 동영상을 가져 오려면 로그인해야하나요? – borrrden

+0

예, 무료 계정으로도 충분하지만 실제적인 장애는 아닙니다. 그러나 귀하의 NDA 사본에 귀하의 "서명"이 있습니다. 나는 아무것도 밀지 않으려 고하지 않습니다. 그것을 시도해 주셔서 감사합니다, BTW! –

관련 문제