Co musisz przede wszystkim, aby słabo połączyć swoją aplikację ze strukturą Kiosk. Pozwala to uniknąć awarii urządzenia z systemem iOS w wersji < 5 z powodu brakujących bibliotek.
Następnie w czasie wykonywania należy unikać wywoływania metod NK i odwoływania się do klas NK, które oczywiście nie są dostępne w iOS < 5. W takim przypadku można użyć metod takich jak NSClassFromString() lub innych funkcji środowiska wykonawczego obj-c, które pozwalają na dynamiczne wykrywanie istnienia tych funkcji.
Zalecenia, które mogę wykonać w takim przypadku, to dostarczenie dyrektywy dotyczącej prekompilatora, która umożliwia odizolowanie wszystkich elementów Kiosku na poziomie kompilacji. W ten sposób możesz spróbować skompilować pakiet SDK 4 (jeśli go posiadasz) i zobaczyć błędy lub ostrzeżenia kompilatora.
E.g. jeśli dodać w swoim Prefix.pch definicję jak ten
#define WILL_USE_NK
następnie można wspornik wszystkie odwołania NK w ten sposób:
#ifdef WILL_USE_NK
... your NK statements go here ...
#endif
Później, kiedy będzie skompilować aplikację z SDK4 zachować ten Definicja, więc będziesz mieć prawdziwą kompilację SDK4 dla urządzeń z systemem iOS4 (którą możesz przetestować), a będziesz mieć pewność, że wszystkie twoje odwołania do NK nie będą używane przez aplikację iOS4. Następnie musisz # ograniczyć tę definicję i skompilować ją z SDK5 (oczywiście mając trochę minimalnego targetu iOS 4.x) przed dystrybucją aplikacji.
Oczywiście w ten sposób nie jesteś chroniony przed wszystkimi możliwymi błędami, ale przynajmniej wyizolowałeś odniesienia do NK.
Jeśli chodzi o lepszą strategię dotyczącą logiki biznesowej aplikacji, zależy to od Ciebie: nie jest to łatwe zadanie, ponieważ teraz Kiosk zajmuje się wieloma aspektami, takimi jak pobieranie w tle i tak dalej. Poza tym model magazynu jest teraz podzielony między istniejący model i funkcje NKIssue, ale wszystkie te szczegóły implementacji wykraczają poza to konkretne pytanie.
Cześć Viggio, to świetny pomysł, dziękuję. To pozwala mi zachować jednolity kod, jednocześnie izolując elementy, które mogą powodować problemy ze zgodnością wsteczną. Dziękuję bardzo! – James