创建者模式-单例模式(OC)

单例模式


Singleton.h

#import <Foundation/Foundation.h>

@interface Singleton : NSObject

+ (Singleton *)sharedInstance;
- (void)print;
@end

Singleton.m

#import "Singleton.h"

@implementation Singleton

+ (Singleton *)sharedInstance {
    static Singleton *_sharedInstance = nil;
    static dispatch_once_t oncePredicate;
    
    dispatch_once(&oncePredicate, ^{
        _sharedInstance = [[self alloc] init];
    });
    
    return _sharedInstance;
}

- (void)print{
    NSLog(@"The Singleton Pattern");
}

@end

main.m

#import <Foundation/Foundation.h>
#import "Singleton.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        [[Singleton sharedInstance] print];
    }
    return 0;
}

注意:因为Objective-C的方法并没有private和public的概念,在任何时间任何对象之间消息都能被传递。因此上面的例子Singleton对象仍然能用init方法创建。

如果一定要使得init方法失效,来至http://stackoverflow.com/questions/195078/is-it-possible-to-make-the-init-method-private-in-objective-c 的解答方案。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 本文主要参考 那些年,我们一起写过的“单例模式”。 何为单例模式? 顾名思义,单例模式就是保证一个类仅有一个...
    tandeneck阅读 7,241评论 1 8
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 5,861评论 0 9
  • 1.OC里用到集合类是什么? 基本类型为:NSArray,NSSet以及NSDictionary 可变类型为:NS...
    轻皱眉头浅忧思阅读 5,229评论 0 3
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,188评论 18 399
  • 今天是凯媛同学步入小学后的第一个星期一,星期一新的开始,早晨早早起床,不能耽误升旗仪式,吃完饭,准时的到了学校,往...
    凯媛凯麟阅读 3,081评论 0 0