2

Objective-cクラスの作成中にドロップダウンから選択するUIImageViewのオプションが見つかりませんでした。xcode4.3を使用しています。UIImageViewクラスを拡張することは許可されていないのか知りたいです。

または、UIViewを継承する必要がありますか?カスタムUIImageViewクラスのサンプル構造が役立ちます。

4

2 に答える 2

7

UIImageViewをサブクラス化することは悪い習慣と考えられていると思います。この質問を見ると、なぜそれをすべきでないのかという多くの例があります。

  • Gang of Foursのデザインパターン哲学の一部は、「クラスの継承」よりも「オブジェクトの構成」を優先することです。これにより、オブジェクト間の密結合が減少します。その場合、1つのクラスを変更しても、システム内の他のクラスへの影響は少なくなります。これにより、変更が容易になり、システムの安定性と保守が容易になります。

  • UIViewをサブクラス化する理由は、たとえば、画像のダウンロード中にUIActivityIndi​​catorを表示する必要があるためです。彼らは彼らの例でこれを示していませんが、私はこのコードを使用しました、そしてそれは本当に良いです。また、この投稿のコメントを見ると、キャッシュや素敵なものなど、より多くのコード例が見つかります。

ただし、UIImageViewをサブクラス化することは可能です。この質問を見てください。

前述の質問で提案されている適切な代替手段は、UIImageViewをサブクラス化する代わりにカテゴリを使用することです。

  • UIImageViewをサブクラス化する代わりに、Objective-Cの「カテゴリ」を使用することをお勧めします。メンバー変数を追加する必要がない限り、カテゴリの方が優れたソリューションです。カテゴリを使用すると、元のクラスの任意のインスタンス(この場合はUIImageView)で拡張関数を呼び出すことができます。これにより、新しい関数を使用する可能性のある場所でサブクラスを意識的に使用する必要がなくなります。

お役に立てれば!

于 2012-07-30T10:20:41.043 に答える
2

UIImageViewをサブクラス化できます。qegalの回答には、覚えておくべき正しいことがたくさん含まれていますが、カーソルをドロップダウンに置いて、継承するクラスの名前を入力し始めると、オートコンプリートが開始されます。

于 2012-07-30T10:34:34.073 に答える