我有一个创建的串行调度队列:
dispatch_queue_t serialQueue = dispatch_queue_create("com.unique.name.queue", DISPATCH_QUEUE_SERIAL);
Run Code Online (Sandbox Code Playgroud)
我想使用这个串行队列来确保类访问的线程安全性,同时自动异步工作,不需要返回调用线程.
- (void)addObjectToQueue:(id)object
{
dispatch_async(serialQueue, ^{
// process object and add to queue
});
}
- (BOOL)isObjectInQueue:(id)object
{
__block BOOL returnValue = NO;
dispatch_sync(serialQueue, ^{
// work out return value
});
return returnValue;
}
Run Code Online (Sandbox Code Playgroud)
如果我调用addObjectToQueue:方法,然后立即调用isObjectInQueue:方法,它们是否保证以相同的顺序执行,或者is/In将首先执行isObjectInQueue?
换句话说,dispatch_async执行与dispatch_sync完全相同(立即调度块),除了它不阻塞调用线程?
我已经看到类似的问题,答案是双向的,所以我正在寻找一个明确的答案,最好用Apple文档支持.
concurrency sync objective-c grand-central-dispatch dispatch-async
我目前在应用程序商店有一个应用程序,我打算很快提交更新.
有了这个更新,我想添加代码,告诉应用程序首次运行时application:didFinishLaunchingWithOptions是否:
目前应用程序商店中的应用程序中没有代码可以处理此问题.
该应用程序使用SQLite数据库,但由于我不会进入这里的原因,我不想使用检查它的存在作为这个问题的解决方案.
作为一个附带问题,如果没有手动存储数据,我是否可以使用SDK来查询应用程序何时安装到设备上?(最好与iOS 3.0兼容)
我见过类似的问题,但没有一个答案适用于使用现有的应用商店代码.