【问题标题】:Using j2objc in swift framework(not static library)在 swift 框架中使用 j2objc(不是静态库)
【发布时间】:2016-06-07 06:25:04
【问题描述】:

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

我的实施步骤如下:

PeopleProject -> Pepole.java:

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

  2. j2objc 的配置(Build Rules,Settings.xcconfig

    构建规则

Settings.xcconfig

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

     @interface Company : NSObject
     @property(nonatomic) People *CEO;
     @end
    
  2. 使用objCFrameWork添加一个恶魔(objCFrameWorkDemo

     Company *c = [[Company alloc] init];
     [c.CEO sayWithNSString:@"Hello"];
    

6.构建objCFrameWork成功。

7.构建 objCFrameWorkDemo 失败。

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

【问题讨论】:

  • 您可以在您的框架中使用任何其他(自定义)Objective-C 类吗?如果不是,这可能与 j2objc 无关。
  • 我新建了一个 objc 文件,它工作正常。

标签: objective-c swift j2objc


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-31
    • 2020-07-05
    • 1970-01-01
    • 1970-01-01
    • 2015-09-17
    • 2016-09-09
    • 1970-01-01
    相关资源
    最近更新 更多