if ([self respondsToSelector:@selector(dismissViewControllerAnimated:completion:)])
{[[self presentingViewController] dismissViewControllerAnimated:YES completion:nil];} //post-iOS6.0
else {[self dismissModalViewControllerAnimated:YES];} //pre-iOS6.0
Robię odpowiedzi na kod selektora (powyżej), aby obsłużyć przestarzałe metody. W ten sposób moja aplikacja jest kompatybilna ze starszymi wersjami iOS, ale dostaję ostrzeżenia w swoim kodzie stwierdzające: "" dismissModalViewControllerAnimated: "jest nieaktualne: najpierw przestarzałe w iOS 6.0" Osobiście nie lubię żadnych ostrzeżeń w moim kodzie, ale co ważniejsze, czytałem gdzieś, że jabłko będzie narzekać na ostrzeżenia w twoim kodzie.przestarzałe ostrzeżenia w kodzie Xcode i sposób postępowania z wycofaniem
1) Czy Apple będzie skarżyło się na ostrzeżenia w swoim kodzie?
2) Czy poprawnie obsługuję przestarzałe metody?
3) Czy istnieje sposób, aby wyłączyć przestarzałe ostrzeżenia dotyczące metody metody?
BTW - Apple nie będzie narzekać na ostrzeżenia w kodzie. Nie mają możliwości dowiedzenia się, że są jakieś (o ile istnieją), chyba że wyślesz im notatkę i powiesz im. – rmaddy
Dobra odpowiedź, ale moje pytanie jest bardziej ogólne pytanie, co zrobić w sytuacji podobnej do tej? Chcę obsłużyć co najmniej jedną lub dwie wersje, więc w tym scenariuszu masz rację, ale co z innymi scenariuszami, w których potrzebujesz obsługiwać oba? jak sobie z tym poradzisz? Tak jak napisałem powyżej i pozostawić ostrzeżenia w? – ConfusedDeer
Nie otrzymasz żadnych ostrzeżeń o wycofaniu, o ile metoda nie została wycofana przed wybranym "celem wdrożenia". Jeśli metoda została uznana za przestarzałą przed "Celem wdrożenia", nie należy podejmować żadnych prób użycia tej nieaktualnej metody. Tak naprawdę nie ma naprawdę wiele do roboty. – rmaddy