mam wsparcie 10.4+ przez wybranie najbardziej aktualny API przy starcie:Pomijanie „«...»jest przestarzała” podczas korzystania respondsToSelector
if ([fileManager respondsToSelector:@selector(removeItemAtPath:error:)])
[fileManager removeItemAtPath:downloadDir error:NULL];
else
[fileManager removeFileAtPath:downloadDir handler:nil];
W tym przypadku, 10,5 i aż użyje removeItemAtPath:error:
i 10.4 będzie użyj removeFileAtPath:handler:
. Świetnie, ale wciąż otrzymuję ostrzeżenia kompilatora dla starych metod:
warning: 'removeFileAtPath:handler:' is deprecated [-Wdeprecated-declarations]
istnieje składnia if([… respondsToSelector:@selector(…)]){ … } else { … }
że podpowiedzi kompilator (Clang) nie ostrzegać na tej linii?
Jeśli nie, czy istnieje sposób, aby oznaczyć tę linię jako ignorowaną dla -Wdeprecated-declarations
?
Po obejrzeniu niektóre odpowiedzi, pozwól mi wyjaśnić, że mylące kompilator do nie wiedząc, co robię, nie jest prawidłowym rozwiązaniem.
Czy możesz po prostu owijać wywołanie w '#pragma clang diagnostic ignored" -Wdeprecated-declaration "', a następnie '#pragma clang warning warning" -Wdeprecated-declaration "' if Clang na OS X nie obsługuje 'push' ? – Wevah
+1 To najlepsze rozwiązanie! – trojanfoe
@ Dziadek czy możesz mi powiedzieć, jak poznać konkretną nazwę ostrzeżenia. To znaczy, pokazuje ostrzeżenie " jest zdeprawowane", ale używamy "-Wdeprecated-deklaracje". Jak znaleźć nazwę atualną, którą musimy użyć w diagnostyce klangów –
Johnykutty