单例模式
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
结论 打印出来的地址是相同的