2009-05-14 10 views
5

私はobjective-cが新しく、インスタンス変数とアクセサを持つフレームワークの標準クラスを拡張する必要があります。私はこれがいわゆる "カテゴリ"で行われていると聞きましたが、これはかなり混乱しています。これは基本的にどのように機能しますか?カテゴリはどのように機能しますか?

答えて

10

カテゴリは、クラス内のメソッドのテーブルにメソッドを追加します。既存のフレームワーククラスにアプリケーション固有のメソッドを追加するのは非常に便利です。

インスタンス変数をクラスに追加する必要がある場合、カテゴリはジョブを実行しません。カテゴリにはデータだけでなくメソッドが追加されます。インスタンス変数を追加するには、サブクラス化する必要があります。

+0

[Associated Objects](http://nshipster.com/associated-objects/)でカテゴリに変数を追加することができます。 –

7

クラスのカテゴリは、そのクラスにメソッドを追加します。インスタンス変数を追加することはできません。

インスタンス変数を追加する必要がある場合は、代わりにサブクラス化することができます。

+3

インスタンス変数を追加する必要がある場合は、関連付けられたオブジェクトを使用できます。 –

関連する問題