2011-10-28 9 views
6

Badam integrację Kiosku w nową aplikację na iOS i chcę wiedzieć, czy mogę to zrobić w sposób, który nadal pozwoli aplikacji działać na urządzeniach, które nie przeszły na system iOS 5.Integrowanie Kiosku bez przerywania wstecznej zgodności

Czy ktoś może dać mi opinię na temat tego, jak zaprojektować aplikację do obsługi tego?

Wiem, że możliwe jest posiadanie pojedynczej aplikacji z różnymi obiektami docelowymi i zestawami plików źródłowych, ale wolałbym, aby baza kodów była jak najbardziej ujednolicona i dynamicznie testować funkcje Kiosku.

Odpowiedz

5

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.

+0

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

Powiązane problemy