常遇到的一些Crash和Bug

一,Unknown type name ....

如果是報(bào)這個(gè)錯(cuò)誤,多半是你的對(duì)象類(lèi)型沒(méi)有被識(shí)別,檢查是不是沒(méi)有引用對(duì)應(yīng)的庫(kù)或者頭文件在你的文件頭部分,還有可能是循環(huán)引用導(dǎo)致的,循環(huán)引用的解決方法就是

Class A 中用import Class B

Class B的.h頭文件里用@class A;

.m文件里再用import

二,EXC_BAD_ACCESS

首先說(shuō)一下 EXC_BAD_ACCESS 這個(gè)錯(cuò)誤,可以這么說(shuō),90%的錯(cuò)誤來(lái)源在于對(duì)一個(gè)已經(jīng)釋放的對(duì)象進(jìn)行release操作。

Objective-C這段代碼有三個(gè)致命問(wèn)題:1、內(nèi)存泄露;2、錯(cuò)誤釋放;3、造成 EXC_BAD_ACCESS 錯(cuò)誤。

1, NSString* s = [[NSString alloc]initWithString:@”This is a test string”]; 創(chuàng)建了一個(gè) NSString Object,隨后的 s = [s substringFromIndex:[s rangeOfString:@"a"].location]; 執(zhí)行后,導(dǎo)致創(chuàng)建的對(duì)象引用消失,直接造成內(nèi)存泄露。

2,錯(cuò)誤釋放。[s release]; 這個(gè)問(wèn)題,原因之一是一個(gè)邏輯錯(cuò)誤,以為 s 還是我們最初創(chuàng)建的那個(gè) NSString 對(duì)象。第二是因?yàn)閺?substringFromIndex:(NSUInteger i) 這個(gè)方法返回的 NSString 對(duì)象,并不需要我們來(lái)釋放,它其實(shí)是一個(gè)被 substringFromIndex 方法標(biāo)記為 autorelease 的對(duì)象。如果我們強(qiáng)行的釋放了它,那么會(huì)造成 EXC_BAD_ACCESS 問(wèn)題。

3, EXC_BAD_ACCESS。由于 s 指向的 NSString 對(duì)象被標(biāo)記為 autorelease, 則在 NSAutoreleasePool 中已有記錄。但是由于我們?cè)谇懊驽e(cuò)誤的釋放了該對(duì)象,則當(dāng) [pool drain] 的時(shí)候,NSAutoreleasePool 又一次的對(duì)它記錄的 s 對(duì)象調(diào)用了 release 方法,但這個(gè)時(shí)候 s 已經(jīng)被釋放不復(fù)存在,則直接導(dǎo)致了 EXC_BAD_ACCESS問(wèn)題。

三:Implicit conversion of an Objective-C pointer to 'int *' is disallowed with ARC

這個(gè)就是自己寫(xiě)錯(cuò)了 int 不帶指針。。。sb了

四:No unexpired provisioning profiles found that contain any of the keychain's singing certificates

此時(shí)需要檢查下,

Organizer->Devices->Provisioning?Profiles中的App Identifier的com及之后部分是否與TARGETS->Summary->iOSApplication Target->Bundle Identifier 相符,特別是后面的項(xiàng)目名稱(chēng)。

五:Incorrect NSStringEncoding value 0x0000 detected. Assuming NSASCIIStringEncoding. Will stop this compatiblity mapping behavior in the near future.

1:當(dāng)一個(gè)字符串為null時(shí),它不能被正常地使用,否則會(huì)報(bào)如下錯(cuò)誤

錯(cuò)誤案例:當(dāng)nstrPublicUrl==null時(shí),如果我們寫(xiě)下如下代碼,就會(huì)報(bào)如上警告。

[objc]view plaincopy

//錯(cuò)誤的案例,nstrPublicUrl==nil時(shí)

NSString*nstrUrl?=?[NSStringstringWithFormat:@"%@%@",nstrPublicUrl,ACCOUNT_URL];?

說(shuō)編碼問(wèn)題的

request.defaultResponseEncoding?=?NSUTF8StringEncoding

說(shuō)超時(shí)的

request.timeOutSeconds=60;

說(shuō)數(shù)據(jù)太大的

反正都沒(méi)大的效果

六:[NSUserDefaults setObject:forKey:]: Attempt to insert non-property value '' of class 'UIImage'.? Note that dictionaries and arrays in property lists must also contain only property values.

NSUserDefault can only store property listed values. 只能保存指定的類(lèi)型比如NSData、NSString、NSNumber、NSDate、NSArray、NSDictionary如果你要保存其他類(lèi)型或者自定義類(lèi)型需要用到archiver. 自己需要寫(xiě)encode和decode兩個(gè)method

參考:http://blog.csdn.NET/sjx19871225/article/details/8589204

七:pngcrush caught libpng error,Not a PNG file Could not find file

While reading /XXX/XXX/XXX/img1.png pngcrush caught libpng error: ??Not a PNG filCould not find file: /Users/XXX/Library/Developer/Xcode/DerivedData/CookBookDemo-cnttcobrbmvbddeiesgsxnfwihfe/Build/Products/Debug-iphoneos/CookBookDemo.app/img1.pngCommand /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/copypng emitted errors but did not return a nonzero exit code to indicate failure

原因,就是引入的png圖片,圖片內(nèi)部編碼不符合真正的png格式。(很可能就是jpg圖片修改了一下后綴名)。

解決方法也很簡(jiǎn)單了,就是用正宗png。

?八:[****ViewController respondsToSelector:]: message sent to deallocated instance

原因解析:

某個(gè)公共類(lèi)或系統(tǒng)提供的控件,存在delegate方法,當(dāng)創(chuàng)建此公共控件的容器類(lèi)已經(jīng)銷(xiāo)毀,

而這個(gè)控件對(duì)應(yīng)的服務(wù)是在其它run loop中進(jìn)行的,控件銷(xiāo)毀或者需要進(jìn)行狀態(tài)通知時(shí),依然按照

delegate的指針去通知,則會(huì)出現(xiàn)這個(gè)問(wèn)題。

本問(wèn)題解法:

在第一個(gè)AViewcontroller的時(shí)候放置UINavigationController,卻在進(jìn)入第三個(gè)CViewcontroller的時(shí)候?qū)崿F(xiàn)了協(xié)議UINavigationDelegate,然后在CViewController中實(shí)現(xiàn)了協(xié)議的方法–?navigationController:willShowViewController:animated:

所以當(dāng)pop到CViewController之前的view后,再pop的時(shí)候會(huì)調(diào)用villShowViewController:animated,但是CViewController已經(jīng)不存在了,故報(bào)錯(cuò)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容