我是 Objective-C 的新手,我正在尝试根据Apple 的文档创建一个单例类。
+ (MyGizmoClass*)sharedManager
{
if (sharedGizmoManager == nil) {
sharedGizmoManager = [[super allocWithZone:NULL] init];
}
return sharedGizmoManager;
}
+ (id)allocWithZone:(NSZone *)zone
{
return [[self sharedManager] retain];
}
在这段代码sharedManager
中是一个静态方法,它将检查这个类的对象是否存在。如果是这样,它将返回先前创建的对象,否则将创建一个新对象。
我有一些疑问:
如果
sharedManager
是静态的,它如何访问super
?当我打印时
[super class]
,为什么它会给出当前的类名?为什么
[[super allocWithZone:NULL] init]
返回当前的类对象?如果
super
等于self
这里而不是为什么它不调用当前类的allocWithZone:(NSZone *)zone
?