Che roba è? Da dove esce? Il punto di crash non è stato modificato dall'ultima commit, per cui... Fantasmi? Maledizioni?
Apro il bundle dell'applicazione: sembra tutto a posto. Entro nella cartella di localizzazione e... eccolo! Anzi, eccoli!
Mentre tutti i file di interfaccia compaiono come documenti generici con estensione
nib
, due di essi si mostrano come xib
!In quel momento ero particolarmente fresco, dato che avevo da poco ripassato l'uso dei tool di Apple per la localizzazione delle applicazioni (
genstring
e ibtool
, per capirsi). Sapevo quindi che in un bundle in esecuzione non dovrebbero esistere gli xib
.Ma perché erano rimasti 'non compilati'?
Diciamo subito che il motivo non è stato trovato: ad un certo punto la situazione era quella. In più, era anche spuntato l'errore che affermava che "l'auto-layout non è supportato per sistemi inferiori al 10.7". Va bene, in effetti il progetto deve funzionare anche sul 10.6, ma il fatto è che non stavo usando l'auto-layout (vade-retro, Satana!).
Prima cosa: facciamo scomparire questo finto avviso. Cioè ho dovuto impostare 10.7 su entrambi gli xib (nel pannello di destra, dopo aver selezionato il file a sinistra); tanto è solo un dato che serve appunto per controllare gli errori.
Poi ho cominciato a girare a caccia di punti 'strani': gli xib facevano parte delle risorse da copiare nel bundle (impostazioni del target); i file erano dove effettivamente dovevano essere, cioè nella cartella di localizzazione,... Bah!
Alla fine, imbeccato da un problema diverso, ho risolto: selezionare il file sulla sinistra, aprire l'inspector a destra e cercare il menu popup che riporta il tipo di file:
Normalmente, come deve essere, è impostato a "Default - Interface Builder"; questo dovrebbe dire al progetto cosa fare di questo file. L'impostazione è corretta, ma evidentemente non rispecchia la verità.
Per cui ho modificato il valore, aprendo il menu e scegliendo un valore a caso (nel mio caso ho scelto "C Preprocessed Source", ma dovrebbe andar bene qualunque). Salvato tutto il progetto con ⌘⌥S, ho poi riportato il menu all'impostazione originale "Interface Builder".
Salvato nuovamente, compilato... Eureka! È tornato a funzionare!!!
---
E, visto che ci sono, segnalo anche come fare in modo che i nib compilati siano accessibili da
ibtool
: basta impostare nei Build Setting il parametro Flatten Compiled XIB Files a NO per lo schema di Debug (si lascia invece a YES per lo schema di Release, in modo che l'applicazione da distribuire sia più leggera possibile e non siano leggibili direttamente dagli utenti).
Nessun commento:
Posta un commento