我有一些应该从A类继承的类。

他们每个人应该是一个单例。

能做到吗?

最佳答案

Singleton模式的这种实现允许继承:

+ (instancetype)sharedInstance {

    static dispatch_once_t once;
    static NSMutableDictionary *sharedInstances;

    dispatch_once(&once, ^{ /* This code fires only once */

        // Creating of the container for shared instances for different classes
        sharedInstances = [NSMutableDictionary new];
    });

    id sharedInstance;

    @synchronized(self) { /* Critical section for Singleton-behavior */

        // Getting of the shared instance for exact class
        sharedInstance = sharedInstances[NSStringFromClass(self)];

        if (!sharedInstance) {
            // Creating of the shared instance if it's not created yet
            sharedInstance = [self new];
            sharedInstances[NSStringFromClass(self)] = sharedInstance;
        }
    }

    return sharedInstance;
}

10-08 02:00