zoukankan      html  css  js  c++  java
  • 创建一个单例类

    Main.m

    /*
     创建单例类
     */
    
    int main(int argc, const char * argv[])
    {
    
    //    NSBundle *bundle = [NSBundle mainBundle];
    //    NSFileManager *fileManager = [NSFileManager defaultManager];
        
        SingletonClass *single1 = [SingletonClass defaultClass];
        SingletonClass *single2 = [SingletonClass defaultClass];
        NSLog(@"single1:%@",single1);
        NSLog(@"single2:%@",single2);
        
        [single1 copy];
        
        //使用alloc方法创建
        SingletonClass *single3 = [[SingletonClass alloc] init];
        NSLog(@"single3:%@",single3);
        
        return 0;
    }

    SingletonClass.h

    + (SingletonClass *)defaultClass;

    SingletonClass.m

    //定义静态单例对象
    static SingletonClass *single = nil;
    
    @implementation SingletonClass
    
    + (SingletonClass *)defaultClass {
    
        if (single == nil) {
            single = [[SingletonClass alloc] init];
        }
        
        return single;
    }
    
    //alloc调用的方法
    //zone是用来分配和释放内存的
    + (id)allocWithZone:(struct _NSZone *)zone {
    
        if (single == nil) {
            single = [super allocWithZone:zone];
        }
        
        return single;
    }
    
    - (id)copy {
    
        return self;
    }
    
    - (id)retain {
    
        return self;
    }
    
    - (oneway void)release {
        //什么都不做
    }
    
    //返回最大值。不让用户查阅引用计数
    - (NSUInteger)retainCount {
    
        return UINT_MAX;
        
    }
    
    - (id)autorelease {
    
        return self;
    }
    


    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    OC之class与metaclass
    call vs apply
    ABI
    WEB服务器的四种类型
    情绪控制
    位置无关代码
    Finding Leaks Using Instruments
    Mac之TwoLevel Namespace
    Apache的几个特性
    Mac之debuging symbol
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4802609.html
Copyright © 2011-2022 走看看