在YourClass中加入下列的初始化方法
status YourClass* singleton;
+ ( YourClass* ) initWithSingleton{
@synchronized( self ){
if ( ! singleton )
singleton = [ [ YourClass alloc ] init ];
}
return singleton;
}
這邊的重點有四個
第一:以+宣告Class method,讓我們可以在實例被宣告之前就可以呼叫這個method。
第二:以status將singleton宣告為靜態實例。
第三:合成實例時,對getter做手腳,如果實例已經存在,則不宣告新的實例,直接return已存在的。
第四:用@synchronized()來控制不會被其他執行緒存取
另一種
+(BooksManager *)sharedInstance
{
@synchronized(self)
{
if (sharedInstance == nil)
{
sharedInstance = [[self alloc] init];
}
}
return sharedInstance;
}
沒有留言:
張貼留言