Objective-C で OS バージョン判定を簡潔に行う方法
概要
Qiita に投稿した下記記事と同じ内容です。
qiita.com
OS のバージョンを調べる方法が、Objective-C だと面倒くさい方法しかないのかと思ってて、うんざりしてたら、そんなことなかったので紹介。
環境
- MacOS 10.12.6
- Xcode 9.0.1
従来の方法
記述量が多くて面倒だった。
if ([UIDevice currentDevice].systemVersion.floatValue >= 11.0) { NSLog(@"iOS11以上だよ"); } else { NSLog(@"iOS11未満だよ"); }
簡潔な方法
記述量が少なくて良い。
if (@available(iOS 11.0, *)) { NSLog(@"iOS11以上だよ"); } else { NSLog(@"iOS11未満だよ"); }
注意点
@available(〜)
と他の条件を一緒に記載すると warning が出る。
ネストすれば大丈夫。
NG
Bool isClose = YES; if (@available(iOS 11.0, *) && isClose) { NSLog(@"iOS11以上だよ"); }
OK
Bool isClose = YES; if (@available(iOS 11.0, *)) { if (isClose) { NSLog(@"iOS11以上だよ"); } }
ネストせずに書けたらいいなぁ。
参考:Negating Objective-C's @available keyword
まとめ
新しいやり方がないか、定期的に確認しないとダメだね。