2011-01-06 23 views
6

Ho introdotto la stampa tramite AirPrint di recente, ma non volevo rilasciare il supporto per le versioni precedenti alla 4.2 (ovviamente). Fatto prima per cose come Game Center, ecc. Ciò che ho trovato particolarmente strano in questo caso è stato il collegamento debole UIKit. La stampa non era contenuta nel suo stesso quadro, permettendomi di essere più granulare.Fondazione di collegamento debole e UIKit?

Questo non mi sembrava giusto, anche se risolve il mio problema permettendo all'applicazione di funzionare correttamente su tutte le versioni.

In Apple's SDK Compatibility Guide essi affermano:

Quando si utilizza un quadro di riferimento che è disponibile nella vostra destinazione di distribuzione, si dovrebbe richiedere che quadro (e non debolmente collegarlo).

UIKit è a disposizione, non solo le classi come UIPrintInfo, UIPrintInteractionController, ecc

ho ragione che sembra strano per collegare debolmente tale quadro di base? C'è un modo migliore?

+0

hai trovato una risposta a questo ancora? Sembra che l'uso di NS_CLASS_AVAILABLE sia corretto se non hai ancora dichiarato il tipo di classe e testalo per primo. avendo risolto questi 2 collegamenti: http://goo.gl/6yH4U e http://goo.gl/FiOd9 non ho ancora trovato una soluzione adeguata. –

risposta

2

C'è un modo migliore. iOS 4.2 ha introdotto NS_CLASS_AVAILABLE per questo scopo, ma ci sono alcune restrizioni sull'utilizzo. Tutti i dettagli sono elencati nella documentazione collegata al di sotto:

http://developer.apple.com/library/ios/#documentation/DeveloperTools/Conceptual/cross_development/Using/using.html

+0

Per rendere questo più specifico: test in fase di esecuzione utilizzando [classe UIPrintInfo], se questo restituisce nulla si è su un sistema precedente e si dovrebbero saltare/disabilitare le funzioni di stampa. –

+0

@Steven Kramer: Ho lo stesso problema. Io uso - (BOOL) canPrint { risultato BOOL = NO; \t Classe printClass = (NSClassFromString (@ "UIPrintInteractionController")); \t if (printClass! = Nil) { \t \t result = [UIPrintInteractionController isPrintingAvailable]; \t} risultato di ritorno; }. Quindi eseguo il test [auto stampa] per abilitare/disabilitare la funzionalità di stampa, ma non funziona. L'ho provato su iPod touch con iOS 3.1.3. Ho provato anche con NSClassFromString (@ "UIPrintInfo"), ma niente. Qualche suggerimento? – Sefran2

+0

Cosa intendi con "non funziona"? Errori di collegamento? Errori di collegamento dinamici? Oppure il test sta restituendo "NO" dove dovrebbe restituire "SÌ" o viceversa? –