dispatch_once
静的オブジェクトの作成に使用するクラス メソッドがあります。dispatch_once
私が使用しているブロック内で、保持サイクルを回避するために[self class]
弱い参照を使用する必要があるかどうか疑問に思っていましたか?self
+ (NSArray *)accountNames{
static NSArray *names = nil;
static dispatch_once_t predicate;
dispatch_once(&predicate, ^{
names = [[[self class] accounts] allKeys];
names = [names sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
});
return names;
}
弱い参照を使用するself
と、警告が表示されます。
+ (NSArray *)accountNames{
static NSArray *names = nil;
static dispatch_once_t predicate;
__weak TUAccount *wself = self;
dispatch_once(&predicate, ^{
names = [[[wself class] accounts] allKeys];
names = [names sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
});
return names;
}
'const Class' 型の式で 'TUAccount *__weak' を初期化する互換性のないポインター型
警告が表示されるので、この場合は弱参照を使用する必要はないと思いますが、self
皆さんの考えを知りたいと思いました。