iOS单例子类化问题

来源:互联网 发布:淘宝移动端店铺装修 编辑:程序博客网 时间:2024/06/06 11:37
继之前转载的iOS单例模式,经查看文档及书籍,了解有关单例子类化的问题。对于前面的iOS单例模式,一般使用基本已能满足。但有时要将单例子类化时,我们将会遇到问题。下面上代码:
//之前的简要代码+ (id)sharedManager {    static MyManager *sharedMyManager = nil;    static dispatch_once_t onceToken;    dispatch_once(&onceToken, ^{        sharedMyManager = [[self alloc] init];    });    return sharedMyManager;}

//改进后代码
+ (id)sharedManager {    static MyManager *sharedMyManager = nil;    static dispatch_once_t onceToken;    dispatch_once(&onceToken, ^{        //这样初始化的singletone 当子类化时,永远返回的是Singletone。 因为Singleton重载了所有实例话相关的方法,所以对其子类化相当需要技巧。        //下面是改进方法        //        sharedMyManager = [[super allocWithZone:NULL] init];        //使用此方法[NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone * zone),根据类的类型实例化任何对象。        sharedMyManager = [NSAllocateObject([self class], 0, NULL) init];    });    return sharedMyManager;}


                                             
0 0
原创粉丝点击