#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface EDSingleton : NSObject
+(instancetype)sharedInstance;
@end
NS_ASSUME_NONNULL_END
#import "EDSingleton.h"
@implementation EDSingleton
+(instancetype)sharedInstance
{
static EDSingleton *singleton = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
singleton = [[EDSingleton alloc]init];
});
return singleton;
}
@end
1.單例是啥
一個類只允許有一個實例,在整個程序中需要多次使用,共享同一份資源的時候,就可以創建單例,一般封裝成工具類使用,蘋果封裝成單例常用的有UIApplication
,NSUserDefaults
,NSNotificationCenter
,NSFIleManager
等等
2.單例優缺點
優點: 因爲單例模式會使類只有一個實例所以方便使用,並且節省內存資源的分配.因爲使用GCD的方式是線程安全的,所以會避免資源的多重使用
缺點: 單例創建的內存只有在程序結束時纔會被釋放. 由於單例不能被繼承(因爲返回的是同一個實例),所以擴展性很不好
明天繼續補充