0
我有一个Sync
类,它基本上在后台将数据同步到服务器。iOS中的后台同步
使用Sync
类对象时,使得类似Sync
类对象的同步请求所在的View Controller可能会在同步实际完成之前解除分配。
我在这里面临的问题是Sync
类对象也被释放,因此同步请求永远不会完成。
我认为Sync
类作为一个单例,但这将更多的滥用Singleton模式。
我该如何继续?
我有一个Sync
类,它基本上在后台将数据同步到服务器。iOS中的后台同步
使用Sync
类对象时,使得类似Sync
类对象的同步请求所在的View Controller可能会在同步实际完成之前解除分配。
我在这里面临的问题是Sync
类对象也被释放,因此同步请求永远不会完成。
我认为Sync
类作为一个单例,但这将更多的滥用Singleton模式。
我该如何继续?
你可以保持很强的指向对象的指针开始操作前:
__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;