Objective-C:單例模式
阿新 • • 發佈:2019-02-03
objecitive C的單例模式:
#import <Foundation/Foundation.h> @class SingleInstance; static SingleInstance *instance = nil; @interface SingleInstance : NSObject + (instancetype)sharedInstance; @end @interface SingleInstance () @property(strong, nonatomic) NSString *name; @end @implementation SingleInstance + (instancetype)sharedInstance; { static dispatch_once_t once_predicate; dispatch_once(&once_predicate, ^{ instance = [[super allocWithZone:nil]init]; }); return instance; } + (instancetype)allocWithZone:(struct _NSZone *)zone { return [SingleInstance sharedInstance]; } - (instancetype)init { if (self = [super init]) { _name = @"SingleInstance"; } return self; } @end
測試程式碼:
SingleInstance *s1 = [SingleInstance sharedInstance];
SingleInstance *s2 = [[SingleInstance alloc] init];
NSLog(@"s1 address:%p, \ns2 address:%p", s1, s2);