Objective-C:单例模式

objecitive C的单例模式:

#import 

@class SingleInstance;

static SingleInstance *instance = nil;

@interface SingleInstance : NSObject

+ (instancetype)sharedInstance;

@end

@interface SingleInstance ()

@property(strong, nonatomic) NSString *name;

@end

@implementation SingleInstance

+ (instancetype)sharedInstance; {
    static dispatch_once_t once_predicate;
    dispatch_once(&once_predicate, ^{
        instance = [[super allocWithZone:nil]init];
    });
    return instance;
}

+ (instancetype)allocWithZone:(struct _NSZone *)zone {
    return [SingleInstance sharedInstance];
}

- (instancetype)init {
    if (self = [super init]) {
        _name = @"SingleInstance";
    }
    return self;
}

@end

测试代码:

        SingleInstance *s1 = [SingleInstance sharedInstance];
    
        SingleInstance *s2 = [[SingleInstance alloc] init];
        
        NSLog(@"s1 address:%p, \ns2 address:%p", s1, s2);





你可能感兴趣的:(IOS,ObjectiveC,IOS)