Objective-Cでシングルトン
静的インスタンスを生成し,一つだけ生成したインスタンスをいれておく. ファクトリクラスメソッドを使い,インスタンス未生成時のみインスタンスを生成する. retain, retainCount, copyWithZone, release, autoreleaseをオーバーライドする.
ARCを使っている場合retain, retainCount, release, autoreleaseは不要.
@implementation SZKSettingData static SZKSettingData *settingData = nil; - (id)init { if (!settingData) { self = [super init]; if (self) { //init } return self; } } + (SZKSettingData *)sharedInstance { @synchronized(self){ if (!settingData) { settingData = [[self alloc] init]; return settingData; } } return settingData; } + (id)copyWithZone:(NSZone *)zone { @synchronized(self){ if (!settingData) { settingData = [super allocWithZone:zone]; return settingData; } } return nil; } - (id)retain { return self; } - (NSUInteger)retainCount { returnNSIntegerMax; } - (void)release{ ; } - (id)autorelease{ return self; } @end
warningが出る部分があるけどこれは 仕 様 で す.