[iOS開発技術之]Objective-Cの一例類の声明
Objective-Cにおける一例類の声明
この記事のソース:http://blog.csdn.net/yhawaii/article/details/7557794
Objective-Cにおいて、単例モードを使用して、単例クラスを定義するプロセスは以下の通りである.
1、staticの種類の対象を定義し、事故値はnilとする.
2、工場法(一般的には「sharedInstance」または「sharedManager」と命名されています)では、第一歩で宣言したstatic類の対象が空の場合だけ、allocWithZoneを使用して新しいオブジェクトを作成します.
3、allocWithZoneを書き換える:方法
4、メモリ管理方法を追加して、このクラスの一例だけが発生することを保証します.
以下はアップルの公式デモの例です.
この記事のソース:http://blog.csdn.net/yhawaii/article/details/7557794
Objective-Cにおいて、単例モードを使用して、単例クラスを定義するプロセスは以下の通りである.
1、staticの種類の対象を定義し、事故値はnilとする.
2、工場法(一般的には「sharedInstance」または「sharedManager」と命名されています)では、第一歩で宣言したstatic類の対象が空の場合だけ、allocWithZoneを使用して新しいオブジェクトを作成します.
3、allocWithZoneを書き換える:方法
4、メモリ管理方法を追加して、このクラスの一例だけが発生することを保証します.
以下はアップルの公式デモの例です.
#import "MySingletonClass.h"
@implementation MySingletonClass
//1、 static
static MySingletonClass *sharedGizmoManager = nil;
//2、
+ (MySingletonClass*)sharedManager
{
@synchronized(self){ //
if (sharedGizmoManager == nil)
sharedGizmoManager = [[super allocWithZone:NULL] init];
}
return sharedGizmoManager;
}
//3、 , , , retainCount 1
+ (id)allocWithZone:(NSZone *)zone
{
return [[self sharedManager] retain];
}
- (id)copyWithZone:(NSZone *)zone
{
return self;
}
- (id)retain
{
return self;
}
- (NSUInteger)retainCount
{
return NSUIntegerMax; //denotes an object that cannot be released
}
- (id)autorelease
{
return self;
}
@end