单例模式

MusicTool.h 文件

 

#import <Foundation/Foundation.h>

 

@interface MusicTool : NSObject

+(instancetype)sharedMusicTool;

 

@end

MusicTool.m 文件

 

#import "MusicTool.h"

 

@implementation MusicTool

static id _instance;

 //重写alloc方法

+(id)allocWithZone:(struct _NSZone *)zone

{

    if (_instance==nil) {

        @synchronized(self){

        

            if (_instance==nil) {

                _instance=[super allocWithZone:zone];

            }

        

        }

    }

    return _instance;

}

+(instancetype)sharedMusicTool

{

    if (_instance==nil) {

//@synchronized 锁

        @synchronized(self){

            if(_instance==nil){

                _instance=[[self alloc]init];

                        }

        }

    }

    return _instance;

}

@end

 

测试:

将MusicTool.h导入ViewController文件中,

ViewController。m

 

import "ViewController.h"

#import "MusicTool.h"

 

@interface ViewController ()

 

@end

 

@implementation ViewController

 

- (void)viewDidLoad {

    [super viewDidLoad];

    NSString *ww1=[[NSString alloc]init];

    NSString *ww2=[[NSString alloc]init];

    NSLog(@"1111---%d",ww1);

    NSLog(@"2222---%d",ww2);  

}

@end

 

结论 打印出来的地址是相同的

posted @ 2015-08-06 17:48  Lee_M  阅读(117)  评论(0编辑  收藏  举报