我有一个Sync
类,它基本上将数据同步到后台的服务器。
Sync
类对象的使用使得我在Sync
类对象上发出同步请求的视图控制器可能会在同步实际完成之前被解除分配。
我在这里遇到的问题是Sync
类对象也会被解除分配,因此同步请求永远不会完整。
我想过将Sync
类作为一个单身人士,但更多的是滥用单身人士模式。
我该怎么办?
答案 0 :(得分:0)
在开始操作之前,您可以保持指向对象的强指针:
__block StubClass *strongSelf = self;
然后启动方法:
[strongSelf dataSync: ^... { //completionBlock
strongSelf = nil;
}];
或者使用信号量:
__block StubClass *strongSelf = self;
dispatch_semaphore_t sem = dispatch_semaphore_create(0);
[strongSelf dataSync: ^... {
dispatch_semaphore_signal(sem);
}];
dispatch_semaphore_wait(sem, DISPATCH_TIME_FOREVER);
strongSelf = nil;