さて、私は1年以上iphoneアプリを開発してきましたが、それでも本当にひどいことが1つあります。
アプリをiOS3.0と互換性を持たせたいとしましょう。SDKを利用可能な最新バージョンに設定し、デプロイターゲットを3.0に設定します。
しかし、誤って... 3.1.x以降でのみ使用可能な関数を呼び出した場合はどうなりますか?そうです、それは単にクラッシュします。
関数が後のiOSバージョンでのみ使用可能であることを通知する警告やインジケーターはありません。また、エミュレータは4.0未満のバージョンをサポートしていないため、アプリケーションが実際に機能するかどうかをテストすることはできません。新しいiOSがすでにインストールされているため、新しいデバイスを購入することもできません。また、古いデバイスを使用している場合でも、コードのすべての部分をチェックすることがほとんど不可能な場合があります。
そして、私の顧客(約2/3)がまだ3.xバージョンを使用していることを知っているので、私は本当に古いバージョンをサポートする必要があります。
アプリ内で呼び出されるすべての関数の可用性をスキャンするコードアナライザーなどはありませんか?
あるケースでは、私が電話したためにアプリがクラッシュしました
+ (id)sortDescriptorWithKey:(NSString *)key ascending:(BOOL)ascending
これは、alloc+の便利な方法です。
- (id)initWithKey:(NSString *)key ascending:(BOOL)ascending;
(さらに、自動リリースされます)しかし、sortDescriptorWithKeyは4.0 @_@でのみ使用可能です。