有人可以在这里向我解释有关 Apple 文档中单例实现的一些内容。

链接:-http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaObjects/CocoaObjects.html

转到链接中的 创建单例实例

我尝试过但无法理解几件事:-

  • + (MyGizmoClass*)sharedManager 中的 [super allocWithZone:NULL] 有什么作用?
  • 为什么 allocWithZone 调用 sharedManger 方法并在保留本身返回 self 时返回其返回类型的保留调用?
  • 如果 Singleton 中有一些实例变量,它们应该在哪里初始化?

  • 如果有人能在这里简要解释 allocWithZone 和 sharedManager 方法的工作,那么很多问题都会自动得到回答。

    最佳答案

    该实现通常被认为是 over_kill。有很多保护措施可以防止程序员误用通常认为没有必要的单例。

    下面是一个来自 Yoga 的更简单实现的例子:

    + (id)sharedFoo
    {
        static dispatch_once_t once;
        static MyFoo *sharedFoo;
        dispatch_once(&once, ^ { sharedFoo = [[self alloc] init]; });
        return sharedFoo;
    }
    

    关于objective-c - Apple 文档中的 Singleton 示例实际上做了什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8789981/

    10-09 07:04