2016-07-29 126 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

相關問題