情况:
iOS6 还是 iOS7,
项目的代码里使用GCD,开启线程并进行堵塞处理,
使用Xcode 5.0 build 真机测试一切正常, 但当Archive生产的ipa就出现问题,
即使符合逻辑条件,线程一直堵塞。
代码如下
dispatch_queue_t queue = dispatch_queue_create("DAY_TRENDS_INIT", NULL);
dispatch_async(queue, ^{
/*condition boolean 进行堵塞处理 另一个线程会操作这个变量*/
while (condition) {
}
dispatch_async(dispatch_get_main_queue(), ^{
if(loadingView)[loadingView dismissWithClickedButtonIndex:0 animated:YES];
/* 具体业务代码忽略*/
});
});
Xcode 5 archive后即使condition为NO,走进下一流程。
遇到其他同事也遇到过类似问题。
一旦改为Xcode5.1 就没问题,更奇怪的是,有些开发机上用5.0打包是没问题的,存疑,有待查证。