我不明白一个问题,我测试了以下两种方法来创建子类实例,结果运行良好。例如SingletonSon:Singleton,没有任何修改的子类,当你调用[SingletonSon sharedInstance]或[SingletonSon alloc]返回一个实例时,SingletonSon而不是Singleton。与书中原始内容的结果相反,原来说:如果没有修改子类Singleton,总是返回一个Singleton实例。
+(Singleton *) sharedInstance
{
if(sharedSingleton==nil)
{
sharedSingleton=[[super allocWithZone:NULL] init];
}
return sharedSingleton;
}
+(Singleton *) sharedInstance
{
if(sharedSingleton==nil)
{
sharedSingleton=[NSAllocateObject([self class],0,NULL) init];
}
return sharedSingleton;
}
我是中国学生,我的英语不是很好,希望原谅我。 期待您的回答。
答案 0 :(得分:1)
好吧,我删除了“Pro”,因为代码根本不是线程安全的。以下是创建单身人士的普遍接受的模式:
+(Singleton *)sharedSingleton {
static dispatch_once_t once;
static Singleton *sharedSingleton;
dispatch_once(&once, ^{
sharedSingleton = [[self alloc] init];
});
return sharedSingleton;
}