常见问题解答 (FAQ)

我在使用 Xcode 进行构建时遇到问题。

请参阅调试构建问题

如何在构建时修复“未定义的符号”错误?

请参阅必需关联设置

我在命令行中使用 j2objc 时遇到问题。

想 j2objc 命令行的最快方法是从 javac 开始,指定类路径(可选)、源路径(可选)、输出目录和源文件列表。成功编译后,请将“j2objc”替换为“javac”,并添加任何特定于 j2objc 的标志。这样做的原因是 j2objc 将 Java 编译器用作前端,因此使用与编译器相同的参数。请记住:如果不能编译,就无法进行翻译!

垃圾回收如何处理?

请参阅内存管理。我们会使用 Xcode 的泄露检测和分析工具,继续优化生成的代码,以改进内存的管理方式。我们建议让使用 J2ObjC 的项目也监控性能和泄露检测(就像所有 iOS 项目一样),并报告发现的任何问题。

如何缩减转换后代码的大小?哪些做法可以提高翻译速度?

请参阅死代码消除

j2objc 如何处理 .java 文件中的导入?

j2objc 使用 javac 编译器作为其前端,因此系统会像任何 Java 编译器一样读取所有导入。如需指定查找导入类的位置,请使用与 javac 相同的 -classpath 和 -sourcepath 选项。生成 Objective-C 文件时,系统会收集外部类引用,并视情况将 #import 指令添加到生成的头文件 (.h) 或实现 (.m) 文件中。

为什么数字类型的某些最小值和最大值与 Java 规范不同?

这些值与 Java 返回的值不同,因为它们不在 Objective-C 编译器会接受的范围之内。而是使用 /usr/include/values.h 中定义的最小值和最大值。