c类示例化的,它是安全的吗?

doinxwow  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(212)

我在一个项目中使用j2objc。我做了所有的设置,包括我的java类。
唯一需要注意的是,我必须禁用arc,否则我的java代码库将无法传输/编译(j2objc本身建议禁用arc)
因为我不能只为生成的文件禁用它,所以我在projectinspector->target->build settings->apple llvm8.0-language-objective c->objective-c automatic reference counting(no)中从objective-c禁用了它
然后,我在swift中创建了viewcontroller,并在没有问题的情况下示例化了从java传输的类(生成的.h文件的头包含在桥接头中),并且我不必在没有arc的obj-c vc中执行任何dealloc/release。
这正常/安全吗?我的意思是,如果我示例化一个transpiled类对象,在引用计数减少后,它会像arc一样自动释放(我知道arc不能在swift中被禁用)。
我知道我仍然需要注意java类中的引用循环,但这不是我所说的泄漏安全。

polkgigr

polkgigr1#

为什么要禁用arc?j2objc生成的代码应该使用或不使用arc(这里有详细信息)。我们建议不要使用arc,因为它对生成的代码执行得稍微慢一点,但是无论使用哪种内存模型,代码都应该正确地管理其内存。
至于无泄漏,这取决于java代码,java代码的引用周期与垃圾收集无关。j2objc的循环查找器可以找到许多这样的循环,运行xcode工具可以找到任何其他的循环。

相关问题