対象OSのバージョンごとの条件付きコンパイルには、「 __IPHONE_OS_VERSION_MIN_REQUIRED 」を使う
SpeedMailer の Ver1.2を出そうとしている。
OS3.0も出るから、3.0でビルドすればいいかと思っていたが、
iPod touch は3.0に上げるためには新たに
1200円(9.95ドル)というお金を払わなければならないという。
SpeedMailer を2.2向けにするか3.0向けにするか、どうしようか考えた。
iPhoneユーザは無料だから全員updateするだろう(PCにつながない人はいないだろう)
iPod touch ユーザで、セキュリティや利便性の向上に注目する人は3.0に上げるだろう。
上げない人は、SpeedMailerが2.2でも動こうが、3.0以上でだけ動こうが、上げないだろう。
それはSpeedMailerのせいじゃない。
というわけで、SpeedMailerはOS 2.2.1で動くようにした。
OS 2.2.1向けにコンパイルし、実機はOS 3.0でも確認する。
ただ今後いつ心変わりするか分からないので、同一ソースで一部だけ変えられるように
#ifdefがないか探したら、あった。
詳細は Availability.h を見てもらうとして、こんな感じ。
#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 30000
cell.textLabel.text = @”iPhone 3.0″;
#else
cell.text = @”iPhone 2.2″;
#endif
「 __IPHONE_3_0 」という定数もあるが、使わないほうがいいらしい。
Availability.hによると、古いOS(?)では、
新しいOSのバージョンを表す定数が未定義なため、
プリプロセッサでは未定義=0として扱われる。とのこと。
SDKのバージョンとOSのバージョンを一時期混同していたのはナイショだ。