2014-06-11 1 views
1

최소 배포 목표가 10.7 인 앱을 작성 중입니다. 따라서 JSExport를 준수하는 프로토콜을 포함하려고 할 때마다 컴파일러는 'JSExport'에 대한 프로토콜 선언을 찾을 수 없다고 말합니다.10.7 이상의 앱에서 조건 적으로 JSExport 프로토콜을 사용 하시겠습니까?

최소 배포 대상을 최대 10.9로 설정하면 잘 컴파일됩니다. 다음은 비 컴파일 코드 예제입니다. 나는 동적 예에 따라 런타임에 MyJSExport 프로토콜을 만드는 시도했습니다

#import <Cocoa/Cocoa.h> 
#import <JavaScriptCore/JavaScriptCore.h> 
#import <WebKit/WebKit.h> 

@protocol MyJSExport <JSExport> 
-(void)doSomething; 
@end 

here을 설정하지만, 그들의 결론은 그것이 작동하지 않았다이었다.

그렇다면 10.7 최소 배포 대상을 유지하면서 JSExport를 준수하는 프로토콜을 어떻게 작성합니까?

답변

0

JSExport 프로토콜은 Javascript getter/setters를 프로토콜의 속성에 정의하고 Javascript 래퍼 기능을 프로토콜에 정의 된 메소드에 정의하도록합니다.

10.9 이전에는 존재하지 않았습니다. 삽입 -

대답은 당신이 다음 <JSExport.h> 검사이 작업을 수행하는 방법에 대한 단서를 제공, 당신은 그냥 자동으로 이전 대상에서이 기능을 무시하는 기대 가정 10.9

보다 적은 대상에 대해 기대하는 어떤 행동에 따라 달라집니다 검사 : (아래 그림 참조)가 이미 정의되어 있지 않은 경우 (않습니다 단지 <JSExport.h>로) JSExport에 대한 자신의 빈 프로토콜은 당신이 10.9

그러나 대 10.7를 위해 컴파일 할 때 변경할 필요가 없습니다 코드를 제공합니다 JavaScriptCore 헤더, 나는 나머지 Objective-C 자바 스크립트 br 10.9로 도입 된 idge 기능은 사용자가 10.9의 타겟을 위해 컴파일 할 때까지 비활성화됩니다. JSContext 또는 JSValue를 사용하고 있습니까?

#import <Cocoa/Cocoa.h> 
#import <JavaScriptCore/JavaScriptCore.h> 
#import <WebKit/WebKit.h> 

// Check if JSExport functionality is available 
#if !JSC_OBJC_API_ENABLED 
@protocol JSExport 
@end 
#endif 

@protocol MyJSExport <JSExport> 
-(void)doSomething; 
@end 
+0

최소한 컴파일해야합니다. 10.7과 10.8을 테스트하지는 못했지만 코드를 피하기 위해 런타임 검사를 추가하는 것이 더 쉬워야합니다. Obj-C와 Javascript 사이의 다리 역할을하기 위해 JSContext를 주로 사용하고 있습니다. 나는 낡은 가짜 계획 해킹으로 돌아 가기를 정말로 원하지 않는다. – Andrew