2011-08-18 15 views
8

Sto lavorando alla mia prima app per Mac OS X. Il mio progetto è stato impostato con le impostazioni predefinite di XCode e non ho toccato nessuna configurazione di costruzione. Quando si costruisce per Mac a 64 bit, l'app funziona correttamente. Tuttavia, quando si costruisce per Mac a 32 bit, ottengo un errore apparentemente arbitraria che dice:Errore durante la creazione dell'app OS X a 32 bit?

Semantic issue: Synthesized property 'myProperty' must either be named the same as a compatible ivar or must explicitly name an ivar.

Che genere di cose che posso controllare?

+3

Consente di visualizzare il file di intestazione contenente la proprietà e le dichiarazioni delle variabili di istanza: il messaggio di errore è molto preciso. – Mark

+0

Ora mi sento stupido. Ho dato un'occhiata a quei file molte volte, anche in un giorno diverso. E ora che hai chiesto di guardarli di nuovo ho individuato un refuso! Wow grazie. – anna

risposta

20

Sembra che tu abbia trovato l'errore ma penso di poter rispondere alla tua domanda nel caso in cui qualcun altro lo trovi successivamente.

Apple ha apportato molte modifiche al runtime Objective-C a 64 bit che non potevano fare prima dato che avrebbe interrotto la compatibilità binaria. Una delle cose che è diversa è che nelle proprietà sintetizzate a runtime a 32 bit devono essere supportate da variabili di istanza. Sulle proprietà sintetizzate del runtime a 64-bit, il davanzale ha bisogno di questo, ma vengono create automaticamente per te. Per impostazione predefinita, il nome della variabile di istanza deve essere uguale al nome della proprietà.

Quindi, nel caso sia necessario supportare 32 bit, assicurarsi di creare variabili di istanza per tutte le proprietà. Se si supporta solo 64 bit, è comunque possibile farlo in modo che il codice possa essere compilato sia per 32 bit sia per 64 bit allo stesso tempo, ma non è necessario.

+7

Le proprietà di sintesi devono ancora essere supportate da variabili di istanza nel runtime moderno; la differenza è che il compilatore li creerà per te, mentre durante la compilazione per la versione precedente a 32 bit, ivars deve essere esplicitamente dichiarato. –

+0

Grazie a entrambi! È bello sapere quel tipo di informazioni. – anna

+0

Grazie per la risposta, questo mi ha salvato :) – banderson623

0

È possibile impostare la macro del preprocessore NS_BUILD_32_LIKE_64 in Xcode per il target di generazione a 32 bit. Ciò ti farà risparmiare la fatica di mantenere un codice separato per le versioni a 32 bit e 64 bit.

Problemi correlati