更新2:我找到了一种解决方法,即同步MOC解除分配和保存.请参阅更新的项目. https://github.com/shuningzhou/MOCDeadLock.git
注意:我更积极地失败了.不要在真实设备上运行它!
更新:演示此问题的示例项目. https://github.com/shuningzhou/MOCDeadLock.git
XCode 6.2:无法重现.
XCode 6.3:可重现.
XCode 6.4 beta:可重现.
========================== 问题 ====================== =========
我们的应用程序OSSpinLockLockSlow在升级到XCode 6.3后随机停留.在我们的项目中,我们使用NSOperation和NSOperationQueue从服务器获取数据并使用Core Data进行数据持久化.
这个问题从未发生过!您可以从堆栈跟踪中看到我们的代码没有进行任何调用.我不知道从哪里开始调试这个.有人可以提供一些指导吗?
先感谢您!
请查看堆栈跟踪


编辑:
我们正在使用AFNetworking和我们NSOperations的子类AFHTTPRequestOperation.我们添加了一些自定义属性并覆盖了该方法-(void)start:
- (void)start;
{
//unrelated code...
NSString *completionQueueID = [NSString uuid];
const char *cString = [completionQueueID cStringUsingEncoding:NSASCIIStringEncoding];
self.completionQueue = dispatch_queue_create(cString, DISPATCH_QUEUE_SERIAL);
//unrelated code....
[super start];
}
Run Code Online (Sandbox Code Playgroud)
因为Core Data,我们正在遵循这种thread-confinement模式.我们managed object context为每个线程分开,并且上下文共享一个静态persistent store coordinator.
编辑2: …
我想制作一个原生的iOS应用程序.它将主要以Objective-C编写.但我需要调用一些python脚本.我一直在研究这个问题.
问题:
1:我发现这篇文章(在iPhone上运行python/ruby脚本?从iPhone OS 4条款--- 3.3.1 - 应用程序只能以Apple规定的方式使用Documented API,不得使用或调用任何私有API.应用程序必须最初使用Objective-C,C,C++或JavaScript编写,由iPhone OS WebKit引擎执行,并且只有使用C,C++和Objective-C编写的代码可以编译并直接链接到Documented API(例如,禁止通过中间翻译或兼容性层或工具链接到Documented API的应用程序)).但它已经2年了.这个协议有变化吗?
2:如果可以在iOS应用程序中调用python脚本,有人可以通过一些代码示例向我解释吗?