日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

iOS中EXC_BAD_ACCESS解决办法

發布時間:2025/4/16 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS中EXC_BAD_ACCESS解决办法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? 在iOS開發過程中m,經常會出現EXC_BAD_ACCESS錯誤而導致程序崩潰。出現這個錯誤的原因是由于你的對象已經被釋放了,而你又調用了它的方法,相當于java中的空指針異常。很多iOS新手基本上都會遇到這個問題,尤其是對象使用了autorelease,或者自己手工過早的把對象release了。

? ? 解決這個問題很簡單,首先要定位到是哪個對象被釋放。一旦出現EXC_BAD_ACCESS,程序會僵死掉,也就是所謂的Zombie,在xcode 做一些配置就可以看出是哪個對象出問題了,步驟如下(我的xcode版本是4.2):

? ??Product->EditScheme->Run->Environment Variables,添加NSZombieEnabled,并設置其值為YES,這樣當出現

EXC_BAD_ACCESS,就可以在控制臺中看到是哪個對象被釋放掉了。

? ? 另外要避免頻繁的出現上述問題,下面是一些建議:

1. 當引用了別人傳遞進來的對象時,最好retain一下,避免在別人那里已經把對象release了,記得不用是要手工release

2. 如果使用了系統的通過靜態方法來生成的對象,比如:[UIButton buttonWithType:UIButtonTypeRoundedRect],這些都是系統為了做好了autorelease,如果你不是很確定什么時候用到或者釋放掉的話,最好也retain一下,同樣記得用完后release掉

3. 一般建議在初始化的時候alloc你的對象,然后在delloc方法中釋放,這樣可以確保在整個過程中對象沒有被release掉

4. 個人不太建議頻繁的使用autorelease,一方面是,容易出現EXC_BAD_ACCESS錯誤;另一方面過多的使用autorelease會影響性能。因為autorelease不知道什么時候被釋放,如果在多線程或者是大的循環中用到的話,會堆積大量的對象,這樣你就不能依賴系統的autoReleasePool,而是要建立自己的autoReleasePool將他們包裝起來,以便提前釋放。顯然用release就不會這么麻煩了。

轉載于:https://blog.51cto.com/ikinglai/1079760

總結

以上是生活随笔為你收集整理的iOS中EXC_BAD_ACCESS解决办法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。