2011年7月28日木曜日

複数のオブジェクトでデータを共有する

Objective-Cで複数のオブジェクトでデータ(インスタンス)を共有するためには、デザインパターンとしてシングルトンを採用する。

シングルトンでは、当該データ(インスタンス)がなければ生成し、あれば現状(インスタンス)を維持するオブジェクトの生成(インスタンス化)のための+メソッドとその状態を保持するStatic変数を実装することで、インスタンスの取得指示で一つのインスタンスのみを操作することができるため、そのインスタンスを複数のオブジェクトで共有することができる。

シングルトンの実装方法

SingletonManager.h
@interface SingletonManager : NSObject {
       NSInteger managedParam;
}
@property NSInteger managedParam;
+ (id)sharedManager;
@end

SingletonManager.m
static id theSharedManager = nil;

@synthesize managedParam;


+ (id)sharedManager {
 if (theSharedManager == nil) {
 theSharedManager = [[self alloc] init]; }
 return theSharedManager;
}

- (id)init
{ self.managedParam=0; return self; }

- (void)dealloc { [super dealloc]; }



シングルトンの利用方法

SomeClass.m
#import "SingletonManager.h"
.....
SingletonManager *single =
[SingletonManager sharedManager];
single.managedParam=100;


明示的な初期化と開放

SingletonSampleAppDelegate.m
#import "SingletonManager.h"

- (void)applicationDidFinishLaunching:...
(void)[SingletonManager sharedManager];
}

- (void)dealloc {
 SingletonManager *single =
[SingletonManager sharedManager];
[single dealloc];
}


にゃーるへそ。

http://ylb.jp/iOSDev/SingletonSample.pdf