[iOS開発技術之]Objective-Cの一例類の声明

1238 ワード

Objective-Cにおける一例類の声明
この記事のソース: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