今天在給一個(gè)UIViewcontroller加了*一個(gè)MJ刷新,就爆了個(gè)這問題
libc++abi.dylib: terminate_handler unexpectedly threw an exception”**只有這個(gè),異常都逮不到
后來開始各種查資料
現(xiàn)在唯一的信息點(diǎn)是libc++abi.dylib,這個(gè)庫(kù)到底是做什么的?從后綴看,是一個(gè)動(dòng)態(tài)庫(kù),那么會(huì)不會(huì)是因?yàn)榘l(fā)生了一些動(dòng)態(tài)錯(cuò)誤?而按經(jīng)驗(yàn)來看,一般的動(dòng)態(tài)錯(cuò)誤基本是因?yàn)閯?dòng)態(tài)類型錯(cuò)誤引起,在object-c語言中,會(huì)發(fā)生動(dòng)態(tài)類型錯(cuò)誤的可能基本存在于不可變類型與可變類型之間的轉(zhuǎn)換,那么我們的查錯(cuò)范圍將優(yōu)先限制在不可變類型與可變類型轉(zhuǎn)換上,是否我們對(duì)一個(gè)不可變類型進(jìn)行了修改操作?當(dāng)然,編譯器沒有那么傻,如果直接對(duì)一個(gè)不可變類型進(jìn)行修改操作,是會(huì)直接報(bào)錯(cuò)的,那么就剩下另一種可能,程序?qū)⒁粋€(gè)不可變類型賦值給可變類型,然后對(duì)可變類型進(jìn)行了修改操作,這樣可以通過靜態(tài)檢查,但是動(dòng)態(tài)運(yùn)行的時(shí)候,就會(huì)發(fā)生類型錯(cuò)誤。基于以上分析,我們可以跟蹤斷點(diǎn),會(huì)發(fā)現(xiàn)程序在對(duì)mutable對(duì)象進(jìn)行add、set等操作時(shí)掛掉,而這個(gè)對(duì)象實(shí)際上賦值的是一個(gè)不可變對(duì)象。常見的情況是把一個(gè)NSArray對(duì)象賦值給一個(gè)NSMutableArray對(duì)象,然后進(jìn)行了delete、add等修改操作,或者把一個(gè)NSDictionary對(duì)象賦值給一個(gè)NSMutableDictionary對(duì)象,然后進(jìn)行了set等操作。
解決
解決辦法很簡(jiǎn)單,賦值的時(shí)候進(jìn)行類型轉(zhuǎn)換:
//mutableArr:可變數(shù)組 arr:不可變數(shù)組 //mutableDic:可變字典 dic:不可 變 字典 //賦值時(shí),需要進(jìn)行可變類型轉(zhuǎn)換 mutableArr = [NSMutableArray arrayWithArray:arr]; mutableDic = [NSMutableDictionary dictionaryWithDictionary:dic];
</code>
這么搞了半天該換的換了,還是解決不了,后來想起來,MJ刷新,貌似有個(gè)幫助文檔
MJ友情提示:
1. 添加頭部控件的方法
MJRefreshHeaderView *header = [MJRefreshHeaderView header];
header.scrollView = self.collectionView; // 或者tableView
2. 添加尾部控件的方法
MJRefreshFooterView *footer = [MJRefreshFooterView footer];
footer.scrollView = self.collectionView; // 或者tableView
3. 監(jiān)聽刷新控件的狀態(tài)有2種方式:
* 設(shè)置delegate,通過代理方法監(jiān)聽(參考MJCollectionViewController.m)
* 設(shè)置block,通過block回調(diào)監(jiān)聽(參考MJTableViewController.m)
4. 可以在MJRefreshConst.h和MJRefreshConst.m文件中自定義顯示的文字內(nèi)容和文字顏色
5. 本框架兼容iOS6\iOS7,iPhone\iPad橫豎屏
6.為了保證內(nèi)部不泄露,最好在控制器的dealloc中釋放占用的內(nèi)存
- (void)dealloc
{
[_header free];
[_footer free];
}
7.自動(dòng)刷新:調(diào)用beginRefreshing可以自動(dòng)進(jìn)入下拉刷新狀態(tài)
8.結(jié)束刷新
1> endRefreshing