zoukankan      html  css  js  c++  java
  • OC4_单例

    //
    //  MusicManager.h
    //  OC4_单例
    //
    //  Created by zhangxueming on 15/6/19.
    //  Copyright (c) 2015年 zhangxueming. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    
    @interface MusicManager : NSObject
    
    //单例方法
    //通常以 default 或者 shared 开头
    
    + (MusicManager *)defaultMusicManager;
    
    
    @end
    
    
    
    //
    //  MusicManager.m
    //  OC4_单例
    //
    //  Created by zhangxueming on 15/6/19.
    //  Copyright (c) 2015年 zhangxueming. All rights reserved.
    //
    
    #import "MusicManager.h"
    
    static MusicManager *music=nil;
    
    @implementation MusicManager
    
    //方法一:
    
    //+ (MusicManager *)defaultMusicManager
    //{
    //    if (music==nil) {
    //        music = [[MusicManager alloc] init];
    //    }
    //    return music;
    //}
    
    //方法二:
    //+ (MusicManager *)defaultMusicManager
    //{
    //    //加线程锁
    //    @synchronized(self)
    //    {
    //        if (music == nil) {
    //            music = [[MusicManager alloc] init];
    //        }
    //    }
    //    return music;
    //}
    
    //GCD写法
    + (MusicManager *)defaultMusicManager
    {
        static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{
            if (music == nil) {
                music = [[MusicManager alloc] init];
            }
        });
        //NSLog(@"onceToken = %li", onceToken);
        return music;
    }
    @end
    
    
    
    //
    //  main.m
    //  OC4_单例
    //
    //  Created by zhangxueming on 15/6/19.
    //  Copyright (c) 2015年 zhangxueming. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    #import "MusicManager.h"
    
    //单例类:该类创建的对象有且只有一个
    
    int main(int argc, const char * argv[]) {
        @autoreleasepool {
            MusicManager *m1 = [MusicManager defaultMusicManager];
            MusicManager *m2 = [MusicManager defaultMusicManager];
            MusicManager *m3 = [MusicManager defaultMusicManager];
            
            NSLog(@"m1 = %p m2 = %p m3 = %p", m1,m2, m3);
            
            
        }
        return 0;
    }
  • 相关阅读:
    2020以去过半,写一下上半年的总结跟下半年的计划
    js实现浏览器打印功能
    看不见远程新建git分支
    Vue中导出Excel表格方法
    SVN命令使用详解
    IOS NSTimer 定时器用法总结
    静态库与动态库的区别?
    iOS 本地缓存实现 方案借鉴
    IOS开发中NSRunloop跟NSTimer的问题
    FMDB
  • 原文地址:https://www.cnblogs.com/0515offer/p/4589564.html
Copyright © 2011-2022 走看看