実行時に最新のAPIを選択することで、10.4以降をサポートしています。
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
ますか?
いくつかの答えを見た後、コンパイラーを混乱させて、私が何をしているのかわからないようにすることは、有効な解決策ではないことを明確にしておきます。