2016-07-29 72 views
0

我遇到了一个问题,当我通过Xcode运行它时,我的应用运行良好,但手动启动时崩溃。我经历了很多帖子,但我找不到任何具体的答案。我检查了设备的日志,这里是一个片段,我认为是事故的原因:当不通过Xcode运行时,应用程序崩溃

Thread 0 name: Dispatch queue: com.apple.main-thread 
Thread 0 Crashed: 
0 libobjc.A.dylib     0x0000000180ff5b9c objc_msgSend +28 
1 AppSupport      0x0000000183159f0c _updateDetachedRecord + 32 
2 AppSupport      0x0000000183159ffc CPRecordGetProperty + 52 
3 AppSupport      0x000000018315a270 CPRecordCopyProperty + 24 
4 AddressBook      0x0000000187774498 ABRecordCopyValueUnfiltered + 68 
5 AddressBook      0x00000001877743bc ABRecordCopyValue + 68 

我试图访问我的地址簿,并获取联系人的详细信息(无论用户点击),然后显示它在弹出窗口中。下面是代码片段:

NSString *firstName = (__bridge NSString *) ABRecordCopyValue(person, kABPersonFirstNameProperty); 
NSString *lastName = (__bridge NSString *) ABRecordCopyValue(person, kABPersonLastNameProperty); 
NSString *company = (__bridge NSString *) ABRecordCopyValue(person, kABPersonOrganizationProperty); 
NSString *title = (__bridge NSString *) ABRecordCopyValue(person, kABPersonPrefixProperty); 
ABMultiValueRef emails = ABRecordCopyValue(person, kABPersonEmailProperty); 
NSString *email = (__bridge NSString *)(ABMultiValueCopyValueAtIndex(emails, 0)); 
ABMultiValueRef phoneNo = ABRecordCopyValue(person, kABPersonPhoneProperty); 
NSString *phnNo = (__bridge NSString *)(ABMultiValueCopyValueAtIndex(phoneNo, 0)); 
ABMultiValueRef skyepeIDs = ABRecordCopyValue(person, kABPersonInstantMessageProperty); 
NSDictionary *skyepeID = (__bridge NSDictionary *)(ABMultiValueCopyValueAtIndex(skyepeIDs, 0)); 

P.S:当我通过Xcode中运行的应用程序运行完全正常。

+1

尝试关闭Swift编译器/代码生成下的构建设置中的发布版本的Swift编译器优化,如果仍然存在,那么尝试关闭整个模块优化 – Buntylm

+1

您是否获取了地址簿在发布时间? –

+0

或在启动时做其他事情? –

回答

2

有很多原因让应用程序在发布模式下崩溃,但我面对它的原因是Compiler Optimisation,我只是把它修理掉了,然后一切正常。根据文档Swift编译器仍处于测试版,所以可能会有很多小问题。但是这与Swift Optimiser有关,如果没有优化,就可以发布,只需更新它就可以了,如果没有,那么看看问题仍然存在,然后再进行优化。 (我没有问题线程,因为我从SO学到的地方,让我搜索)。

enter image description here

注意但是,是的,这是肯定的。有一些代码行Swift Optimisation无法优化。所以试着找出它,这对所有人来说都是非常棒的。

+0

我将其从Build Settings - > Apple LLVM 7.1-代码生成中关闭,因此调试和发布都设置为None [-Oo],但它没有帮助。 – TKutal

+0

构建设置 - > Swift编译器 - 代码生成 - >优化级别。 – Buntylm

+0

没有,Swift编译器 - 生成设置下的代码生成。顺便说一句,我没有使用斯威夫特,所以这有什么帮助?对不起,我是一个noobie。 – TKutal

相关问题