单例模式的作用我就不在此解释了,使用单例模式的代码展示如下。
首先,在头文件中,要禁用生成实例的方法,并且声明单例的类方法
//
// MySingleton.h
// SingleTon
//
// Created by Realank on 15/8/4.
// Copyright (c) 2015年 Realank. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface MySingleton : NSObject
@property (copy,nonatomic) NSString* string;
+(instancetype) sharedInstance;
// clue for improper use (produces compile time error)
+(instancetype) alloc __attribute__((unavailable("alloc not available, call sharedInstance instead")));
-(instancetype) init __attribute__((unavailable("init not available, call sharedInstance instead")));
+(instancetype) new __attribute__((unavailable("new not available, call sharedInstance instead")));
@end
在单例类方法中创建单例实例,这例使用了dispatch_once这个tricky
//
// MySingleton.m
// SingleTon
//
// Created by Realank on 15/8/4.
// Copyright (c) 2015年 Realank. All rights reserved.
//
#import "MySingleton.h"
@implementation MySingleton
+(instancetype) sharedInstance {
static dispatch_once_t pred;
static id shared = nil; //设置成id类型的目的,是为了继承
dispatch_once(&pred, ^{
shared = [[super alloc] initUniqueInstance];
});
return shared;
}
-(instancetype) initUniqueInstance {
if (self = [super init]) {
_string = @"hello";
}
return self;
}
@end
这个单例类使用方法如下:
//
// main.m
// SingleTon
//
// Created by Realank on 15/8/4.
// Copyright (c) 2015年 Realank. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "MySingleton.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
MySingleton *sgt = [MySingleton sharedInstance];
NSLog(@"%@",sgt.string);
}
return 0;
}
至此,希望你喜欢
點(diǎn)擊查看更多內(nèi)容
1人點(diǎn)贊
評(píng)論
評(píng)論
共同學(xué)習(xí),寫(xiě)下你的評(píng)論
評(píng)論加載中...
作者其他優(yōu)質(zhì)文章
正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得
100積分直接送
付費(fèi)專(zhuān)欄免費(fèi)學(xué)
大額優(yōu)惠券免費(fèi)領(lǐng)