Domande frequenti

Ho problemi con la creazione con Xcode.

Vedi Debug dei problemi di build.

Come faccio a correggere gli errori relativi al simbolo non definito durante la creazione?

Consulta la sezione Impostazioni di collegamento obbligatorie.

Ho problemi con l'utilizzo di j2objc dalla riga di comando.

Il modo più rapido per creare una riga di comando per j2objc è iniziare con javac, specificando il classpath (facoltativo), sourcepath (facoltativo), la directory di output e l'elenco dei file di origine. Una volta compilato correttamente, sostituisci "j2objc" con "javac" e aggiungi eventuali flag specifici per j2objc. Il motivo per cui funziona è che j2objc utilizza un compilatore Java come front-end e quindi utilizza gli stessi argomenti del compilatore. Ricorda: se non compila, non può essere tradotto.

Come viene gestita la garbage collection?

Vedi Gestione della memoria. Continuiamo a perfezionare il codice generato per migliorare la gestione della memoria, utilizzando gli strumenti di profilazione e di rilevamento delle fughe di Xcode. Incoraggiamo i progetti che utilizzano J2ObjC a monitorare anche le prestazioni e il rilevamento di perdite (come dovrebbero fare tutti i progetti iOS) e a segnalare eventuali problemi rilevati.

Come si possono ridurre le dimensioni del codice tradotto? Cosa può velocizzare la traduzione?

Vedi Eliminazione dei codici morti.

In che modo j2objc gestisce le importazioni all'interno dei file .java?

j2objc utilizza il compilatore javac come front-end, pertanto tutte le importazioni vengono lette come qualsiasi compilatore Java. Per specificare dove trovare le classi importate, utilizza le stesse opzioni -classpath e -sourcepath che useresti con javac. Durante la generazione di file Objective-C, vengono raccolti riferimenti alle classi esterne e le istruzioni #import vengono aggiunte ai file di intestazione (.h) o di implementazione (.m) generati, a seconda dei casi.

Perché alcuni dei valori minimo e massimo dei tipi numerici sono diversi dalla specifica Java?

Questi valori sono diversi da quelli restituiti da Java perché non sono accettati come validi dal compilatore di Objective-C. Utilizziamo invece i valori minimo e massimo definiti in /usr/include/values.h.