一,Unknown type name ....
如果是報(bào)這個(gè)錯(cuò)誤尼酿,多半是你的對(duì)象類型沒(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)目名稱。
五: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. 只能保存指定的類型比如NSData记焊、NSString逸月、NSNumber、NSDate遍膜、NSArray碗硬、NSDictionary如果你要保存其他類型或者自定義類型需要用到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è)公共類或系統(tǒng)提供的控件信柿,存在delegate方法冀偶,當(dāng)創(chuàng)建此公共控件的容器類已經(jīng)銷毀,
而這個(gè)控件對(duì)應(yīng)的服務(wù)是在其它run loop中進(jìn)行的渔嚷,控件銷毀或者需要進(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ò)