2017-02-14 5 views
0

基本的には設計上の質問です。私はアプリケーションに多数のコードラインを持つコントローラを持っています。私は行の数を減らしたいと思っていました。自己からカテゴリメソッドを呼び出すべきか

Like UIViewController subClassがあり、そのサブクラスにCategoryを作成した場合今私は、UIViewControllerのサブクラスからカテゴリメソッドを呼び出す必要があります。

私は[self categoryMethod]と呼ぶべきですか?

返信いただきありがとうございます!

+0

作成するクラスカテゴリはどれですか?あなたの呼び出しがうまくいくことに基づいています。少しのコードやカテゴリのクラスを教えてください。 – CodeChanger

+0

こんにちは@コード変更私は自分の質問を編集しました。申し訳ありませんが、ここにコードを追加することはできません。 –

+0

なぜですか?使用しているUIViewControllerの特定のインスタンスのメソッドを呼び出しています。他のインスタンスには何もしません。 – Tj3n

答えて

0

はい、あなたは自己オブジェクトを同じクラスUIVIewControllerのオブジェクトとして呼び出すことができますので問題ありません。

あなたがソースコードをあなた-なし サブクラスに利用できない既存の クラスでも1の追加メソッドを定義するにはカテゴリーを使用します。私たちはカテゴリーを必要とする理由はここに

は、いくつかの詳細です。通常は、Cocoa frameworksに定義されているような、クラスを使用して既存のクラス にメソッドを追加します。追加された メソッドはサブクラスによって継承され、クラスの元のメソッドからランタイム で区別できません。また、に独自のクラスの カテゴリを使用することができます:あなたはいくつかのカテゴリにグループ大 クラスのメソッドを、別の ソースファイル - たとえばに独自のクラスの実装を可能性が配布

  • と各カテゴリを異なる ファイルに入れてください。
  • プライベートメソッドを宣言します。

あなたは、カテゴリ名の下にインタフェースファイル でそれらを宣言すると、同じ名前で実装ファイル でそれらを定義することで、クラスにメソッドを追加します。カテゴリ名は、メソッドが であることを示します。クラスへの拡張は、新しいクラスではなく他の場所で宣言されています。

ですから、categoryとして小さな小片(ファイル)にあなたのUIViewControllerコードを配布し、あなたのクラスから呼び出すことができ、この記述に基づきます。あなたはとてもあなたがこのすべてのViewのサブクラスを作成し、そのそれぞれのクラスとに関連するコードを書くことができTableViewHeader ViewFooter ViewNavigation Viewを持っているように、あなたの単一のクラスのコードを削減する

もう一つの方法は、小さな部分であなたのViewControllerを分割でありますメインViewControllerクラスには、データの受け渡しと一般的なメソッドのみが含まれます。

UIとコードを小さな小さな部分に配布することをお勧めします。

希望するものを理解するのに役立ちます。

ハッピーコーディング。

関連する問題