既存のクラスにメソッドを追加できる仕組み
サブクラスを作成せずに、機能を拡張する
rubyのmixinに似ている気がするが、インスタンス変数は宣言できない
(カテゴリはコード実行時に動的に解決される為)
また、複数のカテゴリで同じメソッドが定義されていた場合はどのメソッドが呼ばれるかは決められない
機能の拡張の他にも、メソッドのグループ化にも使われる
もともとは、クラスを分割して書くことができるようにするために実装された機能なので
「カテゴリ」という名前のようだ
使用するには、カテゴリ用のヘッダファイルと実装ファイルを用意する
元のクラス名+カテゴリ名という命名規則がよさそう
NSString+Additional.h
#import <Foundation/Foundation.h>
@interface NSString (Additional)
- (NSString *)addMethod;
@end
NSString+Additional.m
#import "NSString+Additional.h"
@implementation NSString (Additional)
- (NSString *)addMethod
{
...
}
@end