× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。 |
本当に今更なのだがまとめ。
参考 ◯カテゴリ(category) カテゴリは元々クラスを分割して書くことが出来るようにするため考えられた言語機能 インスタンス変数を追加できない 「分割実装」 実行時に解決される だから、インスタンス変数を追加できない ソースコードが存在しない、ライブラリのクラスを扱うことができる 「実装を」分ける。 macの公式実装とか見ると、カテゴリ複数は「AppController.h」に書いてあって 実装側だけ複数の.mファイルに分かれていたりする。 既存のライブラリの拡張も可能(「拡張」と言っているがカテゴリー) 1クラスに1つしか書けない@implementationを、複数に分けるためにカテゴリーを作っている、とも言える カッコの中にカテゴリ名を書く。
実装側にインスタンス変数の宣言はできない。以下はエラーになる
◯クラス拡張(extension) privateな変数、メソッドの宣言に使う インスタンス変数を宣言できる 宣言したメソッドはクラス本体の(=カテゴリ無しの)@implementationで実装 公式で「無名カテゴリ」ともいうらしい コンパイル時に解決される だからインスタンス変数を追加できる 記述は、カッコのカッコの中は空
元の宣言(.hの@interface)とは別に、.mファイルの方に書くのが普通。 実装側でインスタンス変数の宣言も可能
PR |
|