Часто задаваемые вопросы

У меня проблемы со сборкой с помощью Xcode.

См. раздел «Отладка проблем сборки» .

Как исправить ошибки «неопределенный символ» при построении?

См. «Необходимые настройки ссылки» .

У меня проблемы с использованием j2objc в командной строке.

Самый быстрый способ создать командную строку для j2objc — начать с javac, указав путь к классам (необязательно), исходный путь (необязательно), выходной каталог и список исходных файлов. После успешной компиляции замените «j2objc» на «javac» и добавьте любые флаги, специфичные для j2objc. Причина, по которой это работает, заключается в том, что j2objc использует компилятор Java в качестве внешнего интерфейса и поэтому использует те же аргументы, что и компилятор. Помните: если он не скомпилируется, его невозможно будет перевести!

Как осуществляется сбор мусора?

См. Управление памятью . Мы продолжаем совершенствовать сгенерированный код, чтобы улучшить управление памятью, используя инструменты обнаружения утечек и профилирования Xcode. Мы поощряем проекты, использующие J2ObjC, также отслеживать производительность и обнаружение утечек (как и все проекты iOS), а также сообщать о любых обнаруженных проблемах.

Как можно уменьшить размер переведенного кода? Что может ускорить перевод?

См. Устранение мертвого кода .

Как j2objc обрабатывает импорт внутри файлов .java?

j2objc использует компилятор javac в качестве внешнего интерфейса, поэтому весь импорт считывается так же, как это сделал бы любой компилятор Java. Чтобы указать, где найти импортированные классы, используйте те же параметры -classpath и -sourcepath, которые вы использовали бы с javac. При создании файлов Objective-C собираются ссылки на внешние классы, а директивы #import добавляются либо в сгенерированный заголовок (.h), либо в файл реализации (.m), в зависимости от ситуации.

Почему некоторые минимальные и максимальные значения числовых типов отличаются от спецификаций Java?

Эти значения отличаются от того, что возвращает Java, поскольку они выходят за рамки того, что компилятор Objective-C принимает как допустимое. Вместо этого мы используем минимальное и максимальное значения, определенные в /usr/include/values.h.