MST

星途 面试题库

面试题:Objective-C中如何使用GCD实现单例模式

请详细描述在Objective-C中,利用Grand Central Dispatch (GCD) 实现单例模式的具体步骤和代码实现,并解释这样实现的好处。
15.2万 热度难度
编程语言Objective-C

知识考点

AI 面试

面试题答案

一键面试

实现步骤

  1. 定义一个静态变量来存储单例实例。
  2. 使用dispatch_once函数来确保单例实例只被创建一次。

代码实现

#import <Foundation/Foundation.h>

@interface Singleton : NSObject

@property (nonatomic, strong, readonly) NSString *name;

+ (instancetype)sharedInstance;

@end

@implementation Singleton

static Singleton *sharedInstance = nil;

+ (instancetype)sharedInstance {
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        sharedInstance = [[self alloc] init];
        sharedInstance.name = @"Singleton Name";
    });
    return sharedInstance;
}

@end

好处

  1. 线程安全dispatch_once函数是线程安全的,无论在多少个线程中调用sharedInstance方法,单例实例只会被创建一次,无需额外的锁机制来保证线程安全。
  2. 延迟加载:单例实例在第一次调用sharedInstance方法时才会被创建,提高了程序的启动性能,避免了不必要的资源消耗。