Quello che devi prima di tutto per collegare in modo debole la tua applicazione al framework NewsstandKit. Ciò evita che un dispositivo con una versione iOS < 5 si arresti in modo anomalo a causa delle librerie mancanti.
Poi in fase di esecuzione è necessario evitare di chiamare i metodi NK e facendo riferimento alle classi di NK che ovviamente non sono disponibili in iOS < 5. In questo caso è possibile utilizzare metodi come NSClassFromString() o altri c-obj runtime caratteristiche che permettono di rilevare dinamicamente l'esistenza di queste funzionalità.
Una raccomandazione che posso fare in questo caso è fornire una direttiva pre-compilatore che consente di isolare tutti gli elementi di Edicola a livello di compilazione. In questo modo puoi provare a compilare usando SDK 4 (se ce l'hai) e vedere gli errori o gli avvertimenti del compilatore.
E.g. se si aggiunge nella vostra Prefix.pch una definizione del genere
#define WILL_USE_NK
allora si può racchiudere tutti i riferimenti NK in questo modo:
#ifdef WILL_USE_NK
... your NK statements go here ...
#endif
Più tardi, quando si compila l'applicazione con SDK4 si mantiene questo definizione in modo da avere una vera compilazione SDK4 valida per dispositivi iOS4 (che puoi testare) e sarai sicuro che tutti i tuoi riferimenti NK non saranno utilizzati da un'app iOS4. Quindi devi #undef questa definizione e compilare con SDK5 (ovviamente mantenendo iOS 4.x come target minimo) prima di distribuire l'app.
Ovviamente in questo modo non sei protetto da tutti i possibili errori ma almeno hai isolato i riferimenti NK.
Per quanto riguarda la migliore strategia sulla business logic dell'applicazione, questo dipende da voi: non è un compito facile come ora Edicola si prende cura di molti aspetti, come il download in background e così via. Inoltre, il modello di rivista è ora diviso tra il modello esistente e le funzionalità di NKIssue, ma tutti questi sono dettagli di implementazione che vanno oltre questa specifica domanda.
Ciao Viggio, questa è una grande idea, grazie. Ciò mi consente di mantenere il mio codice unificato, isolando i pezzi che potrebbero causare problemi di compatibilità con le versioni precedenti. Grazie mille! – James