• [置顶] 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方法,以进行合适的内存管理。

    我是小强,请多多指教。

  • 相关阅读:
    重新开始学习javase_对象的摧毁
    昨天一日和彭讨论post请求数据的问题
    昨天在公司加班,上午好像就是弄一个ftp的linux服务问题
    昨天有是发现一个新的技术问题
    昨天下午快要下班的时候让他们东软测试
    昨天也没有和家里通话,把时间给了一位同事
    早上8:45到达
    又是一个月初
    今天是下雨天
    从每天开始在工作上才算有点事情
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3206566.html
Copyright © 2020-2023  润新知