4

iPhoneアプリを古いiOSバージョンでも実行したいので、presentModalViewControllerを使用していますが、同時に、非推奨のメソッドを使用しているため、iPhoneアプリがもたらす可能性のある大惨事が心配です。

ありがとう。

4

2 に答える 2

7

H2CO3は非常に正しいです。非推奨の機能を使用しない理由は、非推奨になると、iOSの将来のリリースではサポートされない可能性があるため、アプリがiOSの将来のバージョンで動作しない可能性があるという公正な警告をAppleが提供したためです。新しいpresentViewController方法では、非推奨のメソッドのすべての機能に加えて、completionブロックのオプションが提供されます。多分あなたはそれを必要としないでしょう(その場合あなたはただ合格するでしょうnil)、しかしそれは非推奨の機能を使う理由ではありません。

新しいメソッド(この場合はiOS 5)で必要なバージョンのiOSより前のiOSをサポートすることを計画している場合にのみ、非推奨のメソッドを使用する必要があります。サポートする場合は、条件付きで非推奨のメソッドを古いメソッドにのみ使用する必要があります。バージョン(つまり、Steveが提案するようrespondsToSelectorに、新しいメソッドのオブジェクトがあるかどうかを確認し、使用する場合は古いバージョンを使用しない場合はそれを使用します)。

于 2012-12-11T20:26:16.177 に答える
4

古いバージョンをサポートするために非推奨のメソッドを使用する場合は、オブジェクトが新しいメソッドに応答するかどうかを確認するだけです。そうでない場合は、古いバージョンを使用しているため、古い方法を使用する必要があります。

if ([myVC respondsToSelector:@selector(presentViewController:animated:completion:)]) {
   //use the new version
} else {
   //use the old version.
}
于 2012-12-11T20:41:46.107 に答える