日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS中EXC_BAD_ACCESS解决办法

發(fā)布時(shí)間:2025/4/16 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS中EXC_BAD_ACCESS解决办法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

? ? 在iOS開發(fā)過程中m,經(jīng)常會(huì)出現(xiàn)EXC_BAD_ACCESS錯(cuò)誤而導(dǎo)致程序崩潰。出現(xiàn)這個(gè)錯(cuò)誤的原因是由于你的對(duì)象已經(jīng)被釋放了,而你又調(diào)用了它的方法,相當(dāng)于java中的空指針異常。很多iOS新手基本上都會(huì)遇到這個(gè)問題,尤其是對(duì)象使用了autorelease,或者自己手工過早的把對(duì)象release了。

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

? ??Product->EditScheme->Run->Environment Variables,添加NSZombieEnabled,并設(shè)置其值為YES,這樣當(dāng)出現(xiàn)

EXC_BAD_ACCESS,就可以在控制臺(tái)中看到是哪個(gè)對(duì)象被釋放掉了。

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

1. 當(dāng)引用了別人傳遞進(jìn)來的對(duì)象時(shí),最好retain一下,避免在別人那里已經(jīng)把對(duì)象release了,記得不用是要手工release

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

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

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

轉(zhuǎn)載于:https://blog.51cto.com/ikinglai/1079760

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。