現在のデバイスのiOSバージョンが特定のバージョン(here)以下の場合にのみコードを実行したいと思います。 Appleが与えられたコード例は次のようになります。Objective-Cの@availableキーワードの否定
if (@available(iOS 10.0, *)) {
// iOS 10.0 and above
} else {
// below 10.0
}
はしかし、1は現在のiOSのバージョンが特定のバージョンを下回っている場合にのみ、コードを実行したいシナリオがあります。これが動作しないようですが
if ([email protected](iOS 10.0, *)) {
// below 10.0
}
、と私はXcodeのから次の警告取得しています:私は、次のコードが動作すると仮定
@available does not guard availability here; use if (@available) instead
HereをLLVMを追加したことをコミットしています私は診断しています。
- は
if
ブロック(非常にエレガントではない)に任意のコードを追加することなく、if-else
バリアントを使用します。はその問題には2つの可能なフォールバックがあります。
-[NSProcessInfo isOperatingSystemAtLeastVersion:]
などの古いアプローチを引き続き使用してください。
@available
を使用する別の方法はありますか?
私はLLVMの記事を読んできましたが、ifの中の他の条件や命令で '@ available'を使うことはできません。ですから、基本的に私が考えることができる唯一の方法は、空の 'if'ボディを持ち、' else'ブロック内でアクションを実行することです。これは私にとって唯一可能な方法と思われる。 – cramopy
"これはうまくいかないようですが、Xcodeから次のような警告が表示されています。「警告があっても機能しないというわけではありません。この警告では、可用性を守ることはできないが、バージョンチェックとしてだけ使用しているだけで、可用性を守るのではないという。 – user102008