iOS单例模式

作者: Jimmy5Zhang | 来源:发表于2016-04-18 19:24 被阅读2308次

    一、简介

    1、定义

    SingletonClassDiagram.png

    确保某一个类只有一个实例,而且自行实例化并向整个系统提供整个实例。

    2、优点

    • 1、减少内存开支和系统性能开销;
    • 2、避免对资源的多重占用;
    • 3、优化和共享资源访问。

    3、缺点

    • 1、单例模式没有接口,扩展很困难;
    • 2、单例模式与单一职责有冲突。

    二、实现

    1、定义iOS单例头文件

    //
    //  HTSingleton.h
    //  HTSingleton
    //
    //  Created by jimmyzhang on 16/4/3.
    //  Copyright © 2016年 jimmyzhang. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    @interface HTSingleton : NSObject
    + (id) instance;
    @end
    

    2、实现iOS单例模式

    //
    //  HTSingleton.m
    //  HTSingleton
    //
    //  Created by jimmyzhang on 16/4/3.
    //  Copyright © 2016年 jimmyzhang. All rights reserved.
    //
    
    #import "HTSingleton.h"
    @implementation HTSingleton
    static id instance = nil;
    + (id) instance
    {
        static dispatch_once_t predicate; dispatch_once(&predicate, ^{ 
            instance = [[super alloc] init];
        });
        return instance;
    }
    @end
    

    3、测试

    //
    //  main.m
    //  HTSingleton
    //
    //  Created by jimmyzhang on 16/4/3.
    //  Copyright © 2016年 jimmyzhang. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    #import "HTSingleton.h"
    
    int main(int argc, const char * argv[]) {
        @autoreleasepool {
            // 判断两次获取的实例是否相等,程序将返回1(代表真)
            NSLog(@"%d",[HTSingleton instance] == [HTSingleton instance]);
        }
        return 0;
    }
    

    相关文章

      网友评论

        本文标题:iOS单例模式

        本文链接:https://www.haomeiwen.com/subject/ozealttx.html