2012-09-28 7 views
9

Ho un'app ARC () che crea una libreria statica (anche ARC). L'applicazione lancerà bene, ma quando viene eseguita l'un'azione che legge o scrive a un @property nella libreria statica l'applicazione andrà in crash con questo errore:ARC App si blocca quando si accede a @property form ARC static lib

dyld: lazy symbol binding failed: Symbol not found: _objc_setProperty_nonatomic 
 Referenced from: /var/mobile/Applications/0E7ADBB4-FFE5-4CEB-B418-8A35A92E99D4/MyApp.app/MyApp 
 Expected in: /usr/lib/libobjc.A.dylib 

dyld: Symbol not found: _objc_setProperty_nonatomic 
 Referenced from: /var/mobile/Applications/0E7ADBB4-FFE5-4CEB-B418-8A35A92E99D4/MyApp.app/MyApp 
 Expected in: /usr/lib/libobjc.A.dylib 

Tutti i consigli è stato sul collegamento di librerie non-ARC alle app ARC (o viceversa). Ma questi sono entrambi ARC.

risposta

32

del app Base SDK è stato impostato su iOS 6 e iOS Deployment Target è stato fissato a iOS 5.0 tuttavia per la libreria statica sia il Base SDK & iOS Deployment Target sono stati fissati per iOS 6.

Assicurandosi il Base SDK & iOS Deployment Target abbinato in app e la biblioteca ha risolto questo problema.

+1

Buon punto sul rendere tutte le parti uguali. A meno che non si preveda di supportare le funzionalità di iOS 6 quando disponibili (e di affrontare i grossi problemi di test e il codice di rilevamento delle funzionalità richiesto), consiglio anche di impostare Base SDK e iOS Deployment Target sulla stessa cosa (iOS 5 in questo caso). Nonostante la dichiarazione ufficiale di Apple secondo cui dovresti sempre collegarti all'ultimo SDK, il team Xcode del WWDC ha convenuto che tale approccio è molto fragile perché il compilatore non ti avvisa quando usi in modo non corretto funzioni non supportate. –

+0

super - una delle mie numerose librerie statiche aveva questo problema - risolto ora - grazie. – Ramesh

+0

Come si modifica 'Base SDK' e' Destinazione di distribuzione iOS' per la libreria statica? – fredley

Problemi correlati