objective-c的单例模式测试

    xiaoxiao2021-12-14  16

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

    转载请注明原文地址: https://ju.6miu.com/read-964337.html

    最新回复(0)