objective-c的单例模式测试

//
//  main.m
//  instancetypeTest
//
//  Created by chenqy on 2016/12/2.
//  Copyright © 2016年 chenqy. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Singleton : NSObject
+(instancetype) shareInstance ;
@end

@implementation Singleton

static Singleton* _instance = nil;

+(instancetype) shareInstance
{
    static dispatch_once_t onceToken ;
    dispatch_once(&onceToken, ^{
        _instance = [[super allocWithZone:NULL] init] ;
    }) ;
    
    return _instance ;
}

+(id) allocWithZone:(struct _NSZone *)zone
{
    return [Singleton shareInstance] ;
}

-(id) copyWithZone:(struct _NSZone *)zone
{
    return [Singleton shareInstance] ;
}

@end

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        NSLog(@"Hello, World!");
        Singleton* obj1 = [Singleton shareInstance] ;
        NSLog(@"obj1 = %@.", obj1) ;
        
        Singleton* obj2 = [Singleton shareInstance] ;
        NSLog(@"obj2 = %@.", obj2) ;
        
        Singleton* obj3 = [[Singleton alloc] init] ;
        NSLog(@"obj3 = %@.", obj3) ;
        
        Singleton* obj4 = [[Singleton alloc] init] ;
        NSLog(@"obj4 = %@.", obj4) ;
    }
    return 0;
}

结果:

2016-12-02 14:27:45.326872 instancetypeTest[937:50884] Hello, World!

2016-12-02 14:27:45.327937 instancetypeTest[937:50884] obj1 = <Singleton: 0x1002000c0>.

2016-12-02 14:27:45.328104 instancetypeTest[937:50884] obj2 = <Singleton: 0x1002000c0>.

2016-12-02 14:27:45.328247 instancetypeTest[937:50884] obj3 = <Singleton: 0x1002000c0>.

2016-12-02 14:27:45.328294 instancetypeTest[937:50884] obj4 = <Singleton: 0x1002000c0>.

Program ended with exit code: 0


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值