zoukankan      html  css  js  c++  java
  • [置顶] Objective-C编程之道iOS设计模式单例解析(2)

    上一篇文章,提到了单例子类化的问题。正好最近,我在Stack Overflow看见一位国外高人,也谈及了单例子类化的一些内容。思考之后,总结了一些内容。其大意是利用NSDirectory存储不同子类的单例实例,这样可以很好的解决单例子类化的问题。OK,talk is cheap,show me the code! 多说无益,以下是我自己写的一段示例代码

    #import "MySingleton.h"
    
    @implementation MySingleton
    static NSMutableDictionary * singletonDictionary=nil;
    +(MySingleton *) sharedInstance{
        if(singletonDictionary==nil){
            singletonDictionary=[NSMutableDictionary dictionaryWithObject:[NSAllocateObject(self, 0, NULL) init] forKey:[[self class]description]];
            
        }
        else{
            if([singletonDictionary objectForKey:[[self class] description]]==nil){
                [singletonDictionary setObject:[NSAllocateObject(self, 0, NULL) init] forKey:[[self class] description]];
            }
            
        }
        
        return [singletonDictionary objectForKey:[[self class] description]];
        
    }
    -(void) release{
        
    }
    -(id) retain{
        return self;
    }
    -(id)autorelease{
        return self;
    }
    -(NSUInteger)retainCount{
        return NSUIntegerMax;
    }
    +(id)allocWithZone:(NSZone *)zone{
        
        return [[self sharedInstance]retain];
    }
    @end
    


    拥有这样的单例模式的父类,子类只需直接继承父类,即可轻松实现属于自己的类单例模式,而且同时支持很多不同子类和父类的单例并存。当然,子类也可以重新定义自己的retain,release,autorelease方法,以进行合适的内存管理。

    我是小强,请多多指教。

  • 相关阅读:
    笔记2-斐波那契数列
    笔记1-排序
    C++ 顶层const和底层const ?
    C++指针常量与常量指针的区别?
    C++指针和引用的区别?
    函数指针, 指针函数?
    手机横竖屏问题
    Swift
    Swift 渐变色
    Swift guard 关键字
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3206566.html
Copyright © 2011-2022 走看看