亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

接收到的壞接入信號

接收到的壞接入信號

iOS
慕仙森 2019-06-26 15:32:08
接收到的壞接入信號當將應用程序部署到設備時,程序將在幾個周期后退出,出現以下錯誤:Program received signal: "EXC_BAD_ACCESS".這個程序在iPhone模擬器上運行時沒有任何問題,只要我一次只看一遍指令,它也會調試和運行。一旦我讓它再次運行,我就會擊中EXC_BAD_ACCESS信號。在這種情況下,它恰好是加速度計代碼中的一個錯誤。它不會在模擬器中執行,這就是為什么它沒有拋出任何錯誤。但是,一旦部署到設備上,它就會執行。這個問題的大部分答案都是關于將軍的。EXC_BAD_ACCESS錯誤,所以我將此打開作為一個捕獲-所有可怕的壞訪問錯誤。EXC_BAD_ACCESS通常是由于非法的內存訪問而引發的。您可以在下面的答案中找到更多信息。你有沒有遇到EXC_BAD_ACCESS信號之前你是怎么處理的?
查看完整描述

3 回答

?
慕桂英4014372

TA貢獻1871條經驗 獲得超13個贊

從您的描述中,我懷疑最有可能的解釋是您在內存管理中出現了一些錯誤。你說你已經在iPhone開發上工作了幾個星期,但并不是說你對目標C是否有經驗。如果您來自另一個背景,那么您需要一段時間才能真正內化內存管理規則-除非您非常重視它。

記住,從一個分配函數(通常是靜態的alloc方法,但還有一些其他的方法)獲得的任何東西,或者一個復制方法,您都擁有內存,并且在完成時必須釋放它。

但如果你從其他東西中得到了什么包括工廠方法(如:[NSString stringWithFormat])然后您將有一個自動釋放引用,這意味著它可能在將來的某個時候由其他代碼發布-因此,如果您需要保留它的直接功能之外,那么保持它是非常重要的。如果不這樣做,則可能在使用內存時仍然分配內存,或者在模擬器測試期間釋放內存,但碰巧仍然有效,但更有可能在設備上運行時釋放內存并顯示為錯誤的訪問錯誤。

追蹤這些事情的最佳方法,一個好主意(即使沒有明顯的問題)是在儀器工具中運行應用程序,特別是使用泄漏選項。


查看完整回答
反對 回復 2019-06-26
?
藍山帝景

TA貢獻1843條經驗 獲得超7個贊

exc_bad_access的一個主要原因是試圖訪問釋放的對象。

若要了解如何解決此問題,請閱讀以下文檔:自動釋放池

即使你不認為你在“釋放自動釋放的對象”,這也適用于你。

這種方法非常有效。我一直在使用它,并取得了巨大的成功!

總之,這說明了如何使用Cocoa的NSZombie調試類和命令行“malloc_History”工具找到代碼中訪問的釋放對象。

西德諾特:

運行儀器和檢查泄漏將無助于對exc_bad_access進行故障排除。我很確定內存泄漏與exc_bad_access無關。泄漏的定義是一個不再具有訪問權限的對象,因此不能調用它。

最新情況:我現在使用儀器來調試泄漏。在Xcode 4.2中,選擇Product->Profile,當儀器啟動時,選擇“Zombies”。


查看完整回答
反對 回復 2019-06-26
?
holdtom

TA貢獻1805條經驗 獲得超10個贊

根據我的經驗,這通常是由非法的內存訪問造成的。檢查所有指針,特別是對象指針,以確保它們已初始化。如果您正在使用MainWindow.xib文件,請確保正確設置MainWindow.xib文件,并提供所有必要的連接。

如果紙面檢查沒有任何結果,并且在單步執行時不會發生,那么嘗試用NSLog()語句定位錯誤:將代碼灑在代碼中,移動它們,直到隔離導致錯誤的行為止。然后在該行上設置一個斷點并運行您的程序。當您到達斷點時,檢查所有變量,以及它們中的對象,看看是否有任何事情不像您所期望的那樣,我特別注意那些對象類是您沒有想到的變量。如果一個變量應該包含一個UIWindow,但是它中有一個NSNotification,那么當調試器不在運行時,相同的底層代碼錯誤可能會以不同的方式顯示出來。


查看完整回答
反對 回復 2019-06-26
  • 3 回答
  • 0 關注
  • 445 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號