1

iOS7 と iOS6 で実行するアプリを書いているとします。私はプロトコルを実装するクラスを持っています.iOS7でのみ利用可能なプロトコルです(この場合はNSLayoutManagerDelegate)。

すべてが iOS6 で動作するようです。プロトコルを実装するクラスをインスタンス化する私のコードは、iOS6 ではスキップされます。

ただし、アプリの読み込み中にエラーが表示されないことに少し驚きました。どうやらローダーは、存在しないプロトコルを実装しても問題ないようです。幸いなことに!

このシナリオについて説明している Apple のドキュメントはありますか? 安全ですか?注意すべき点はありますか?

4

1 に答える 1

2

それは問題ありません。これは、システムによってのみ呼び出されるメソッドを特定のバージョン以上で実装するのと少し似ています。

最悪の場合、古いバージョンでは使用されずに、どこかのスペース (iOS では「ディスク」、おそらく RAM とも呼ばれる場合) を占有するコードを生成したと言えますが、それは最小限です。 .

これにはすべて、問題のプロトコルを含む SDK を使用してコードをコンパイルする必要があります - プロトコルへの準拠が構造体を使用し<ProtocolName>、対応するヘッダーを含めることによって宣言されている場合。しかし、それ以外の場合はコンパイルされないため、それは一種の当然のことです。

于 2013-09-18T18:04:55.603 に答える