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;
    }
    


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

  • 相关阅读:
    PHP的这些基础知识你应该熟知
    PHP版的猴子选大王算法
    Linux常用命令,面试常考
    PHP中常见的数字掐头去尾操作方法
    永久重定向301与临时重定向302区别
    WordPress子模板继承
    双系统引导设置
    OpenCv
    SpringBoot后端跨域问题
    存储式参数校验
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4802609.html
Copyright © 2011-2022 走看看