• 创建一个单例类


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


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

  • 相关阅读:
    docker底层原理
    搭建docker私有镜像仓库harbor
    docker 网络详解
    从对集合数据去重到Distinct源码分析
    学习笔记(3)centos7 下安装RabbitMQ
    学习笔记(2)centos7 下安装mysql
    学习笔记(1)centos7 下安装nginx
    2.Redis的数据类型
    1.Redis介绍以及安装
    mongoDB的安装和配置
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4802609.html
Copyright © 2020-2023  润新知