0

我有一个Sync类,它基本上在后台将数据同步到服务器。iOS中的后台同步

使用Sync类对象时,使得类似Sync类对象的同步请求所在的View Controller可能会在同步实际完成之前解除分配。

我在这里面临的问题是Sync类对象也被释放,因此同步请求永远不会完成。

我认为Sync类作为一个单例,但这将更多的滥用Singleton模式。

我该如何继续?

回答

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;