1. ホーム
  2. objective-c

[解決済み] Category ExtensionとClass Extensionの違いとは?

2023-05-13 22:23:48

質問

カテゴリとクラス拡張の違いは何ですか。私は両方が既存のクラスにカスタムメソッドを追加するために使用されると信じています。どなたか、このことに光を当てていただけないでしょうか。コードで説明すると、本当に感謝されます。

どのように解決するのですか?

カテゴリは、既存のクラスにメソッドを追加する方法です。 それらは通常、"NSView+CustomAdditions.h" のような "Class+CategoryName.h" というファイルに存在します (そしてもちろん .m もあります)。

クラス拡張は、2 つの主な相違点を除いて、カテゴリです。

  1. カテゴリは名前を持ちません。 このように宣言されています。

    インターフェース SomeClass ()
    
    
    
    - (void) anAdditionalMethod;
    
    
    終了
  2. 拡張機能の実装 が必要です。 は、ファイルのメインの @implementation ブロックになければなりません。

.m ファイルの先頭でクラスの拡張子がクラスのメソッドを宣言しているのを見るのはよくあることで、それはクラスのメインの @implementation セクションの下で実装されます。 これは、quot;pseudo-private" メソッドを宣言する方法です (外部で公開されていないだけで、実際にはプライベートではないという点でpseudo-privateです)。