-1
Когда я инициализирую синглтон, как это, я обнаружил, что это приведет к мертвой блокировке.Dead lock on Singleton call
@interface A : NSObject
@property (readwrite, nonatomic, assign) BOOL flag;
@end
@implementation A
+(instancetype)sharedInstance
{
static id instance = nil;
static dispatch_once_t once;
dispatch_once(&once, ^{
instance = self.new;
});
return instance;
}
-(instancetype)init
{
self = [super init];
if(self != nil)
{
[A sharedInstance].flag = YES;
}
return self;
}
@end
Есть ли способ его разорвать?
Просто предположите, но не вызывайте 'sharedInstance' из' init', который вызывает 'sharedInstance'. –
Обратите внимание, что использование «точечного синтаксиса» должно быть ограничено свойствами и/или настройкой/получением, а не вызовом методов с побочными эффектами. – zaph