美文网首页
3. J2Objc: Annotation & 混合代码

3. J2Objc: Annotation & 混合代码

作者: kexue | 来源:发表于2018-01-05 17:44 被阅读53次

    目的就是在处理一些中间代码的时候,部分内容依旧在java中管理,例子:cordova插件项目,ios端代码主要来源于andorid端,手工处理了一些公共代码,用接口方式来分别管理。

    接口

    特别的是如下代码:

    import com.google.j2objc.annotations.Property;
    /*-[
      #import "java/lang/NullPointerException.h"
    ]-*/
    
    public class HelloWorldNative {
      @Property("nonatomic, copy")
      private String tableId;
    
      /*-HEADER[
        @property (nonatomic, assign) void (^callbackBlockFailed)(FISOperationCallbackModel *failedModel);
      ]-*/
      
      public static native void main(String[] args) /*-[
          NSLog(@"%s", "HelloWorldNative");
          @throw [[JavaLangNullPointerException alloc] init];
      ]-*/;
    }
    

    执行步骤:

    $ pwd
    /Users/wdxxl/J2OBJC_Github/j2objc_wdxxl_demo/0_writing_native_methods
    $ j2objc -version
    j2objc 2.0.5
    $ j2objc HelloWorldNative.java
    $ J2objcc -c HelloWorldNative.m
    $ j2objcc -o hello HelloWorldNative.o
    $ ./hello HelloWorldNative
    2018-01-04 11:03:59.696 hello[95951:3963406] HelloWorldNative
    Exception in thread "main" java.lang.NullPointerException
        at 0x000000010424a00b java.lang.NullPointerException.<init>() + 14
        at 0x0000000104219801 HelloWorldNative.main() + 81
        at 0x000000010421979d HelloWorldNative.main() + 29
        at 0x00000001044a3794 java.lang.reflect.Method.invoke:object:() + 22
        at 0x00000001044a339e java.lang.reflect.Method.invoke() + 332
    

    相关文章

      网友评论

          本文标题:3. J2Objc: Annotation & 混合代码

          本文链接:https://www.haomeiwen.com/subject/vwpsnxtx.html