0

我正在为一个项目使用 J2ObjC。我确实设置了所有内容并包含了我的 Java 类。

唯一需要注意的是,我必须禁用 ARC,否则我的 Java 代码库将无法转译/编译。(J2ObjC 本身建议禁用 arc)

由于我无法仅禁用生成的文件,因此我在 Project Inspector -> Target -> Build Settings -> Apple LLVM 8.0 - Language - Objective C -> Objective-C Automatic Reference Counting 中从 Objective-C 禁用了它(否)

然后我在 Swift 中创建了我的 ViewController,并毫无问题地实例化了从 Java 转译的类(生成的 .h 文件的标头包含在桥接头中),并且我不必在 Obj-C 中做任何我应该做的 dealloc/release没有 ARC 的 VC。

这是正常的/泄漏安全的吗?泄漏安全是指如果我实例化一个转译的类对象,在引用计数减少后,它会像 ARC 一样自动释放(我知道 Swift 中不能禁用 ARC)。

我知道我仍然需要注意 Java 类中的引用循环,但这不是我所说的泄漏安全的意思。

4

1 回答 1

0

为什么必须禁用 ARC?j2objc 生成的代码可以在有或没有 ARC 的情况下工作(详见此处)。我们建议不要使用 ARC,因为它对生成的代码执行速度稍慢,但无论使用哪种内存模型,代码都应该正确管理其内存。

至于无泄漏,这可能取决于 Java 代码,它可以具有引用周期,而这些引用周期对于垃圾回收来说不是问题。J2ObjC 的cycle_finder可以找到其中的许多循环,运行 Xcode Instruments Leaks 工具可以找到任何其他循环。

于 2017-01-03T20:15:00.700 回答