OC--單例模式

話不多說(shuō),同樣是個(gè)人筆記。

1、在頭文件聲明類(lèi)方法
#import <Foundation/Foundation.h>

@interface Student : NSObject
+ (Student*) getInstance;
@end

2、在源文件中實(shí)現(xiàn)相應(yīng)方法

#import "Student.h"

static Student* instance = nil;

@interface Student()
- (instancetype) init;
@end

@implementation Student
+ (Student*) getInstance {
    if (instance == nil) {
        instance = [[Student alloc]init];
    }

    return instance;
}

- (instancetype) init {
    return self;
}

//覆蓋allocWithZone
+ (id) allocWithZone:(struct _NSZone *)zone {
    @synchronized(self) {
        if (!instance) {
            instance = [super allocWithZone:zone];//確保使用同一塊內(nèi)存地址
            return instance;
        }
    }

    return nil;
}

- (id) copyWithZone: (NSZone*)zone {
    return self;//確保copy對(duì)象也是唯一
}
@end

3、調(diào)用

Student* stu1 = [Student getInstance];
Student* stu2 = [Student getInstance];
Student* stu3 = [stu1 copy];
    
NSLog(@"stu1 = %@", stu1);
NSLog(@"stu2 = %@", stu2);
NSLog(@"stu3 = %@", stu3);

4、測(cè)試結(jié)果

stu1 = <Student: 0x100503920>
stu2 = <Student: 0x100503920>
stu3 = <Student: 0x100503920>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 導(dǎo)讀: 一、什么是單例模式 二、單例的作用 三、常見(jiàn)的單例類(lèi) 四、自定義單例類(lèi)的方法 一、什么是單例模式 單例模式...
    千山小畻閱讀 1,285評(píng)論 0 0
  • 版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。 單例模式的意思就是只有一個(gè)實(shí)例。單例模式確保某一個(gè)類(lèi)只有一個(gè)...
    LeaderBiao閱讀 1,026評(píng)論 0 1
  • 單例是在我們?cè)陧?xiàng)目學(xué)習(xí)特別是在工具類(lèi)的抽取中經(jīng)常用到的一種設(shè)計(jì)模式。說(shuō)道底,單例就是一個(gè)類(lèi)唯一的實(shí)例對(duì)象,我們無(wú)法...
    木子尚武閱讀 1,124評(píng)論 0 1
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,937評(píng)論 18 139
  • 回想這兩天的奔波,雖然不易,但事情總歸告一段落,那些擦肩而過(guò)的人,依然回到自己的生活軌道上,就像我一樣回到大山里。...
    止于丘隅閱讀 413評(píng)論 0 0