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