在swift框架中使用j2objc(不是静态库)

时间:2016-06-07 06:25:04

标签: objective-c swift j2objc

我想在Xcode中导入由Cocoa Touch Framework中的j2objc翻译的文件,并得到一些错误。

我的实施步骤如下:

PeopleProject - > Pepole.java

   class Pepole{
          .....
    }
  1. 创建一个框架(名为:objCFrameWork),语言是xcode(非静态库)中的Objective-C。 enter image description here

  2. 配置j2objc(构建规则,Settings.xcconfig

    构建规则 enter image description here

  3. Settings.xcconfig

    enter image description here

    1. 在框架项目中新建一个文件(Campony)并导入People.h

       @interface Company : NSObject
       @property(nonatomic) People *CEO;
       @end
      
    2. 使用objCFrameWorkDemo

      添加恶魔(objCFrameWork
       Company *c = [[Company alloc] init];
       [c.CEO sayWithNSString:@"Hello"];
      
    3. 6.成功构建objCFrameWork。

      7.Build objCFrameWorkDemo失败。

      enter image description here

      来源https://github.com/leogeng/J2ObjC_Framework.git

1 个答案:

答案 0 :(得分:1)

如果Java源代码(A.java)声明它是包的一部分,则默认转换要求您将包作为子目录包含在内。例如,如果类A位于foo.bar包中,则标题需要引用为#include "foo/bar/A.h"

如果这不起作用(Xcode不能很好地支持子目录,那么很多项目都会避免它们),然后使用--no-package-directories标志运行j2objc以生成不使用子目录的文件。这要求应用程序中的所有Java源文件都具有唯一的类/接口名称,因为不再有用于区分它们的包(例外是JRE类,它总是需要包子目录)。