Perguntas frequentes

Estou com problemas para criar com o Xcode.

Consulte Como depurar problemas de build.

Como corrigir erros de "símbolo indefinido" durante a criação?

Consulte as Configurações de link necessárias.

Estou com problemas para usar j2objc na linha de comando.

A maneira mais rápida de criar uma linha de comando para j2objc é começar com javac, especificando o caminho de classe (opcional), o caminho de origem (opcional), o diretório de saída e a lista de arquivos de origem. Depois disso, substitua "j2objc" por "javac" e adicione quaisquer sinalizações específicas de j2objc. O motivo disso é que j2objc usa um compilador Java como front-end e, portanto, usa os mesmos argumentos que o compilador. Lembre-se: se ele não for compilado, não poderá ser traduzido.

Como a coleta de lixo é processada?

Consulte Gerenciamento de memória. Continuamos refinando o código gerado para melhorar a forma como a memória é gerenciada usando as ferramentas de detecção de vazamento e criação de perfil do Xcode. Incentivamos projetos que usam J2ObjC para também monitorar o desempenho e a detecção de vazamentos (como todos os projetos do iOS deveriam) e relatar quaisquer problemas encontrados.

Como reduzir o tamanho do código traduzido? O que pode acelerar a tradução?

Consulte Exclusão de códigos inativos.

Como j2objc lida com importações dentro de arquivos .java?

O j2objc usa o compilador javac como front-end. Portanto, todas as importações são lidas como qualquer compilador Java faria. Para especificar onde encontrar classes importadas, use as mesmas opções -classpath e -sourcepath que você usaria com javac. Ao gerar arquivos Objective-C, referências de classe externas são coletadas e diretivas #import são adicionadas aos arquivos de cabeçalho gerados (.h) ou de implementação (.m), conforme apropriado.

Por que alguns dos valores mínimos e máximos para tipos numéricos são diferentes da especificação Java?

Esses valores são diferentes do que o Java retorna, porque estão fora do que o compilador Objective-C aceita como válidos. Em vez disso, usamos os valores mínimo e máximo definidos em /usr/include/values.h.