Powinieneś zawsze preferować wykrywanie dostępnych metod/funkcji zamiast wersji iOS, a następnie przy założeniu, że dostępna jest metoda.
Zobacz Apple documentation.
Na przykład w iOS 5, aby wyświetlić modalne kontroler widoku zrobilibyśmy coś takiego:
[self presentModalViewController:viewController animated:YES];
W iOS 6, sposób UIViewController
presentModalViewController:animated:
jest przestarzała, należy użyć presentViewController:animated:completion:
w iOS 6, ale skąd wiesz, kiedy użyć czego?
Możesz wykryć wersję iOS i mieć instrukcję if, jeśli chcesz użyć tego pierwszego lub drugiego, ale jest to delikatne, popełnisz błąd, może nowszy system operacyjny w przyszłości będzie miał nowy sposób na zrobienie tego .
Prawidłowy sposób obsłużyć to:
if([self respondsToSelector:@selector(presentViewController:animated:completion:)])
[self presentViewController:viewController animated:YES completion:^{/* done */}];
else
[self presentModalViewController:viewController animated:YES];
Można nawet twierdzić, że powinny być bardziej rygorystyczne i zrobić coś takiego:
if([self respondsToSelector:@selector(presentViewController:animated:completion:)])
[self presentViewController:viewController animated:YES completion:^{/* done */}];
else if([self respondsToSelector:@selector(presentViewController:animated:)])
[self presentModalViewController:viewController animated:YES];
else
NSLog(@"Oooops, what system is this !!! - should never see this !");
jestem pewien o swoim przykładzie UIActionSheet
, O ile mi wiadomo, to samo dotyczy iOS 5 i 6. Być może myślisz o UIActivityViewController
do udostępniania i możesz chcieć powrócić do UIActionSheet
, jeśli używasz systemu iOS 5, więc możesz sprawdzić, czy klasa jest dostępne, patrz here jak to zrobić.
Dzięki za pomoc! Niezwykle wspaniała odpowiedź! –
Przyjemność i podziękowania za komplementy about.me – Daniel
Możesz utworzyć łącze do frameworka w ustawieniach projektu, w takim przypadku, że ramka może nie być obecna we wszystkich wersjach, na przykład w twoim przypadku, wystarczy ustawić opcję jako opcjonalną. raczej wtedy wymagane. ---- pytanie zostało usunięte .... pytanie/komentarz. – Daniel