在介绍instance
来自:Create singleton using GCD's dispatch_once in Objective C
+ (instancetype)sharedInstance
{
static dispatch_once_t once;
static id sharedInstance;
dispatch_once(&once, ^
{
sharedInstance = [self new];
});
return sharedInstance;
}
我想知道为什么不在下面使用[MyFunnyClass new]?
@implementation MyFunnyClass
+ (instancetype)sharedInstance
{
static dispatch_once_t once;
static id sharedInstance;
dispatch_once(&once, ^
{
sharedInstance = [MyFunnyClass new];
});
return sharedInstance;
}
或者它是否相同?
(参考:http://nshipster.com/instancetype/)
编辑:Why use [ClassName alloc] instead of [[self class] alloc]?给出的答案与此问题无关
答案 0 :(得分:3)
在这种情况下,使用[self new]
代替[MyClass new]
并使用static id sharedInstance
代替static MyClass *sharedInstance
的原因是因为您只需复制并粘贴整个方法无需编辑。方法中没有任何内容特定于它所属的类。
答案 1 :(得分:0)
请参阅Why use [ClassName alloc] instead of [[self class] alloc]?
此外,惯例是使用alloc / init,而不是new。见alloc, init, and new in Objective-C