当不通过Xcode运行时,应用程序崩溃
问题描述:
我遇到了一个问题,当我通过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中运行的应用程序运行完全正常。
答
有很多原因让应用程序在发布模式下崩溃,但我面对它的原因是Compiler Optimisation
,我只是把它修理掉了,然后一切正常。根据文档Swift
编译器仍处于测试版,所以可能会有很多小问题。但是这与Swift Optimiser
有关,如果没有优化,就可以发布,只需更新它就可以了,如果没有,那么看看问题仍然存在,然后再进行优化。 (我没有问题线程,因为我从SO学到的地方,让我搜索)。
注意但是,是的,这是肯定的。有一些代码行Swift Optimisation
无法优化。所以试着找出它,这对所有人来说都是非常棒的。
尝试关闭Swift编译器/代码生成下的构建设置中的发布版本的Swift编译器优化,如果仍然存在,那么尝试关闭整个模块优化 – Buntylm
您是否获取了地址簿在发布时间? –
或在启动时做其他事情? –