Categoryでクラスを拡張する
Categoryを使うと, Objective-Cのクラスのファイルを分離できる
また, 既存のクラスに適用すると,
既存のクラスにメソッドを追加できたりする。
ファイル
ClassName+CategoryName.h, ClassName+CategoryName.m
といったファイル名にするのが,ルール。
宣言の部分などがちょっと違う
@interface Class (Category) // Code @end
@implementation Class (Category) // Code @end
NSDateをちょっと拡張する
ヘッダーの準備
NSDate+CurrentTimeMillis.h
@interface NSDate (CurrentTimeMillis) +(long long)currentTimeMillis; @end
コード
NSDate+CurrentTimeMillis.m
@implementation NSDate (CurrentTimeMillis) +(long long)currentTimeMillis { struct timeval t; gettimeofday(&t, NULL); long long millis = t.tv_sec * 1000 + t.tv_usec / 1000; return millis; } @end
使用する
#import "NSDate+CurrentTimeMillis.h" long long time = [NSDate currentTimeMillis];
サブクラスを普通に使えばよいのでは思ってしまう訳だが
クラスに動的に追加できるということ + 既存クラスをそのまま拡張できるところがよいところか。