有名なデザインパターン 「Singleton(シングルトン)」 、iPhone, iPad の開発でも
Controller 間で簡単にデータを共有したい
オブジェクトの生成を制御したい
など結構使いたい場面が出てくるかもしれません。そんなときは、こんな感じで実現できます。
(iOS 5 で試してます)
MySingleton というファイルを NSObject のサブクラスとして作成します。そこに、sharedObject というクラスメソッドを用意すれば OK です。サンプル実装では、alloc でオブジェクトを作れないようにするため、allocWithZone をオーバーライドしています。
サンプル実装はこんな感じになります。
MySingleton.h
@interface MySingleton : NSObject
+ (MySingleton*)sharedObject;
@end
MySingleton.m
@implementation MySingleton
+ (MySingleton*)sharedObject
{
static MySingleton *sharedObject = nil;
if(!sharedObject) {
sharedObject = [[super allocWithZone:nil] init];
}
return sharedObject;
}
+ (id)allocWithZone:(NSZone *)zone {
return [selfsharedObject];
}
@end