XXIII, 어떻게 방법을 직접 OC 호출하는 IOS 플랫폼에서 JS를 사용하는 [공식 문서적인 Cocos2D는-JS]를

자바와 안드로이드적인 Cocos2D-JS JS 호출에서 3.0 RC2에,적인 Cocos2D-JS 또한 목표 - C, 다음 샘플 코드 iOS 및 맥 JS 직접 호출하는 방법을 제공한다 :

    var ojb = jsb.reflection.callStaticMethod(className, methodNmae, arg1, arg2, .....);

에서 jsb.reflection.callStaticMethod방법, 우리는 OC, 메소드 이름의 클래스 이름을 통해 전달 된 매개 변수 직접 정적 방법 OC를 호출 할 수 있으며, OC는 반환 값을 얻을 수 있습니다.

범주

  • 매개 변수 클래스 이름 만 자바와는 달리, 클래스 이름 경로를 필요로하지 않는다는 OC에 클래스 이름을 전달해야합니다. 예를 들어, 프로젝트 아래에 새 범주를 만들 NativeOcClass오랫동안 그 프로젝트에, 그때 그는 클래스 이름만큼, NativeOcClass당신이 그 경로에 통과 할 필요가 없습니다.
  1.  
    수입 <재단 / Foundation.h>
  2.  
    @interface NativeOcClass을 : NSObject의를
  3.  
    + ( BOOL) :( callNativeUIWithTitle 는 NSString *) :( 표제 andContent 는 NSString *) 함유량;
  4.  
    @종료

방법

  • JS은 클래스 OC OC 정적 방식 지원을 반영.
  • 우리는 방법의 전체 이름을 전달해야한다는 것을, 노트에 매개 변수와 특히 방법을 메소드 이름을 비교하기 위해, 당신은 그에게 필요합니다 : 그 벨트. 위의 예에 따르면. andContent :이 때, 메소드 이름은 callNativeUIWithTitle입니다, 그들 사이 놓치지 마세요 :
  • 이 인수가없는 경우, 그 다음 코드를 :, 필요하지 않고, 자신의 메소드의 이름은 callNativeWithReturnString아무 인수가 없기 때문에, 그는 필요하지 않습니다 OC를 작성하는 방법과 일치.
    +(NSString *)callNativeWithReturnString;

사용의 예

  • 다음 샘플 코드는 위의 호출 NativeOcClass방법, 우리는 호출 할 필요가 JS의 레이어를 :
  1.  
    VAR RET = jsb.reflection.callStaticMethod ( "NativeOcClass"
  2.  
    "callNativeUIWithTitle : andContent",
  3.  
    "적인 Cocos2D-JS"
  4.  
    ) "그래! 당신은 기본 UI 반사에서 전화";
  • 다음은 OC를 달성하는 방법은, 당신이 볼 수있는 팝업 대화 상자의 기본이다. 그리고에 titlecontent당신의 매개 변수를 설정 전달, 반환 부울 반환 값.
  1.  
    + ( BOOL) :( callNativeUIWithTitle 는 NSString *) :( 표제 andContent 는 NSString *) 콘텐츠 {
  2.  
    UIAlertView alertView * = [[ UIAlertView ALLOC] initWithTitle : 타이틀 메시지가 위임 내용 : 자기 cancelButtonTitle : @ otherButtonTitles "취소" @ "OK"를 닐];
  3.  
    [alertView 쇼];
  4.  
    반환 사실;
  5.  
    }
  • 이 시점에서, 당신은 할 수 있습니다 ret접수에 반환 된 OC에서 값 (true)를 반환합니다.

주의하십시오

OC 구현에서, 상기 방법의 경우 파라미터는 플로트, INT, BOOL의 사용을 필요로 변환 다음 유형을 사용

  • 플로트, INT 유형, 사용의 NSNumber
  • BOOL에 bool 형식을 사용하십시오.
  • 예를 들어, 다음 코드는, 우리는 두 개의 부동 소수점 숫자를 통과 한 다음 합병에 대한 그들의 수익을 계산, 우리는 매개 변수로 입력하는 대신 INT, 부동의의 NSNumber를 사용합니다.
  1.  
    + ( 플로트) :( addTwoNumber 의 NSNumber *) :( NUM1과 의 NSNumber *) {NUM2
  2.  
    플로트 결과 = NUM1하는 FloatValue] + [NUM2하는 FloatValue];
  3.  
    결과를 반환;
  4.  
    }
  • 현재 매개 변수와 반환 값이 INT, 플로트, 부울, 문자열을 지원 종류의 나머지는 지원되지 않습니다.

 

HTTPS : //blog.csdn.net/qinning199/article/details/42045765에서 재판

추천

출처www.cnblogs.com/wodehao0808/p/11929646.html