亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Objective-C ARC單例模式代碼

標簽:
iOS

单例模式的作用我就不在此解释了,使用单例模式的代码展示如下。

首先,在头文件中,要禁用生成实例的方法,并且声明单例的类方法

//
//  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;
}

至此,希望你喜欢

點擊查看更多內容
1人點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
移動開發工程師
手記
粉絲
11
獲贊與收藏
446

關注作者,訂閱最新文章

閱讀免費教程

感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消