工程
有網(wǎng)絡(luò)請求的頁面,返回時注意添加取消網(wǎng)絡(luò)請求操作
-(void)addCancalHttp;
網(wǎng)絡(luò)請求判斷步驟:
一、 網(wǎng)絡(luò)連接失敗
異常流提示:網(wǎng)絡(luò)連接失敗,請稍后重試!
二、 網(wǎng)絡(luò)連接正常
1、 判斷原始數(shù)據(jù)responseData是否為空(拋異常時異常流應(yīng)為返回數(shù)據(jù)異常)
2、 轉(zhuǎn)json格式[jsonResult chJSONValue],判斷json是否為空(拋異常時異常流應(yīng)為數(shù)據(jù)解析失?。?br>
3、 判斷數(shù)據(jù)類型,如NSDictionary, NSArray,(拋異常時異常流應(yīng)為數(shù)據(jù)格式不正確)
4、 判斷NSDictionary, NSArray是否有數(shù)據(jù),(拋異常時異常流應(yīng)為沒有數(shù)據(jù))
5、 如果為NSDictionary判斷ifSuccess是否等于@"Y",如果為@"N"時,異常流要用后臺返回的description
6、 解析數(shù)據(jù),返回
常規(guī)
1,創(chuàng)建NSDictionary NSArray 元素非空判斷
2,NSArray 數(shù)組越界
3,發(fā)送消息 數(shù)據(jù)類型不正確 (常出現(xiàn)在后臺返回數(shù)據(jù))
4,碰到添加陰影時,注意性能
5、自己添加緩存數(shù)據(jù)時,注意增加版本號
6、修改任何公共的模塊,要注意問一下當(dāng)時做這個模塊的人
7、按鈕獨占事件
**8、當(dāng)一個界面有push和pop的時候,兩個操作相隔時間很短,一個動畫未結(jié)束,另外一個動畫已經(jīng)開始,導(dǎo)致動畫沖突crash,應(yīng)添加如下代碼 if (self.navigationController.topViewController != self) **
9、加載一次性大圖片并且不在tableview中使用時用imageWithContentsOfFile(如新版本引導(dǎo)頁,背景大圖片等不需要一直放在應(yīng)用緩存中的圖片)。小圖片或者在tableview中使用的圖片可以用imageNamed
10、代理只能用weak,不能用assign和strong
11、數(shù)組中循環(huán)刪除多條數(shù)據(jù)時,不能使用for(in)
12、在異步線程中不要做任何與UI相關(guān)的操作,與UI相關(guān)的操作都放進(jìn)主線程中
13、強制性要求:在項目中往數(shù)組或字典中塞值時,以及從網(wǎng)上拿到數(shù)據(jù)時,都要先做非空轉(zhuǎn)換
14、在做writeToFile讀寫操作時,記得加try catch或者線程鎖,防止多線程同時修改和寫入同一個文件導(dǎo)致Crash
15、注意NSDateFormatter非線程安全特性,網(wǎng)上說IOS7以后NSDateFormatter已經(jīng)變成線程按鈕,但實踐證明并沒有。使用NSDateFormatter時最好是在使用的時候創(chuàng)建,但是創(chuàng)建NSDateFormatter是一個耗時操作,大量創(chuàng)建NSDateFormatter會產(chǎn)生性能問題。加鎖會導(dǎo)致線程阻塞問題。具體如何使用看情景。
16、日期轉(zhuǎn)換時,要注意時差問題,建議都將其轉(zhuǎn)換成GMT時間。這樣在將日期字符串轉(zhuǎn)換成NSDate,再將NSDate轉(zhuǎn)換成日期字符串時,前后日期字符串不會有差異。(千萬不要日期字符串轉(zhuǎn)換成NSDate使用一種時間,NSDate轉(zhuǎn)換成日期字符串時使用另一種時間)