Я поддерживаю 10.4+, выбирая самый современный API во время выполнения:
if ([fileManager respondsToSelector:@selector(removeItemAtPath:error:)])
[fileManager removeItemAtPath:downloadDir error:NULL];
else
[fileManager removeFileAtPath:downloadDir handler:nil];
В этом случае 10.5 и выше будут использовать removeItemAtPath:error:
, а 10.4 будут использовать removeFileAtPath:handler:
. Отлично, но я все еще получаю предупреждения компилятора для старых методов:
warning: 'removeFileAtPath:handler:' is deprecated [-Wdeprecated-declarations]
Есть ли синтаксис if([… respondsToSelector:@selector(…)]){ … } else { … }
, который подсказывает компилятору (Clang), чтобы он не предупреждал об этой строке?
Если нет, есть ли способ пометить эту строку для игнорирования для -Wdeprecated-declarations
?
После просмотра некоторых из ответов позвольте мне пояснить, что запутать компилятор в неведении о том, что я делаю, не является допустимым решением.