5

質問には主観的な部分があることは承知していますが、Apple の開発は命名規則についてかなり固執していることを考えると、私のコーディングが何をしているかを他の人が理解できる方法でこれを行いたいと考えています。最も一般的な方法で質問しようとしていますが、回答に影響する場合に備えて、コメントに特定の詳細の一部を追加します.

iOS 6 と iOS 7 の両方をサポートしているとしましょう。iOS 7 SDK にのみ存在する既存のクラスに新しいメソッドがあります。アプリに「十分」な方法で機能を実装するのはかなり簡単だと仮定します。しかし、もちろん、より適切にサポートされ、より効率的で、エッジ ケースをより適切に処理できる可能性が高いため、SDK バージョンを使用したいと思います。

この Q&Aに記載されているように、この状況を処理するのは簡単です。

if ([myInstance respondsToSelector:@selector(newSelector)]) {
    //Use the SDK method
} else {
    //Use my "good enough" implementation.
}

しかし、条件付き呼び出しを大量にコードに散らかしたくはありません。この動的なメソッド選択をカプセル化した方がよいようです。(特に私の場合、メソッドがまだ実際に出荷されておらず、名前/署名が変更される可能性があります。)

私の本能は、私の機能と、この動的なメソッドの選択を実装するラッパー メソッドの両方を実装するクラス カテゴリを追加することです。

これは正しいアプローチですか?その場合、どの命名規則を使用すればよいですか? (明らかに、メソッドに iOS7 メソッドと同じ名前を付けることはできません。そうしないと、名前の衝突が発生します。)

私の直観的な反応は、私のラッパー メソッド safeNewSelector と私の実装を lwNewSelector というプライベート メソッド (ここで、lw は私の標準クラス プレフィックス) と呼ぶことです。しかし、標準的な命名規則と見なされるものを使用したいと思います。

4

3 に答える 3