近期工作中遇到的一些問題總結
1.城市列表資料的更新,可以加入版本控制這個概念,每次進入時先比對本地版本號跟伺服器版本號是否一致,不一致去網路進行請求來進行城市資料的更新.
2.解析字典的指令碼,將字典字串拷貝到txt文件,cd到其所在目錄,然後命令列執行:cat readme.txt | awk -F’ = ’ ‘{print 1}' | sed 's/[" ]//g' |awk '{printf("@property (copy, nonatomic) NSString *%s;\n",1)}’
3.在iOS開發時,有時候遇到libc++abi.dylib handler threw exception這樣的異常, 雖然在斷點出加上了All Exceptions,也斷到相應的程式碼了,但是沒列印對應的日誌,實際上不是這段程式碼的問題。因此不知道什麼地方出錯了。這時候可以用下面的程式碼來列印異常log.
@try{
}
@catch(NSException *exception) {
NSLog(@”exception:%@”, exception);
}
@finally {
}
4.安全檢查問題.如果resdic不是字典,呼叫字典的方法就會崩潰,所以這種要進行安全檢查: [resdic isKindOfClass:[NSDictionary class]
5.新增子檢視控制器,有時候用這種比較方便. 新增子檢視控制器:
**[self addChildViewController:pvc];
[self.view addSubview:pvc.view];
pvc.view = self.view.bounds;**
從父檢視控制器移除:
**[self willMoveToParentViewController:self.parentViewController];
[self.view removeFromSuperview];
[self didMoveToParentViewController:self.parentViewController];**
6.建立訂單,支付中間的時間控制問題.
使用者點選建立訂單,伺服器設定一個超時時間十分鐘,需要使用者在十分鐘內完成支付,直接去操作是沒什麼問題.但是如果不直接操作,第三方的支付超時時間跟伺服器訂單儲存的超時時間不同步,可能出現的情況就是:伺服器這邊訂單已經失效了,但是第三方支付仍可以支付,出現bug.有個預想的處理方法是:支付前進行查詢訂單操作,伺服器返回一個超時時間,然後進行第三方支付時把這個超時時間設定過去.但是在做的過程中又遇到了新的問題:第三方支付的超時時間有限制,支付寶是1min~15d,微信是要大於五分鐘.
解決方案:建立訂單 跟調第三方支付建立訂單 同時進行,然後第一次支付的時候設定超時時間.
7.一個東西一定要搭好架子,不能為了一時的速度和便捷去忽視程式碼質量,這樣做的結果就是後期的維護花的時間是你之前節約的時間的很多倍.
8.推送環境分為:開發環境,生產環境. 伺服器分為:開發環境,測試環境(生產前測試),生產環境. 通過Xcode直接執行的為開發環境(debug),如果是打包上傳到網頁或者APPStore的則為生產環境. 而伺服器那端的環境在iOS端的體現則體現在連結地址上.
當前任職公司為創業公司,許多地方還不太完善,有些需要規範的地方沒有規範到位,就會出現奇怪的bug.讓測試人員進行測試的時候應該在電腦上接線安裝debug版本,對應的伺服器環境為測試環境.但由於滿足公司領導的需求,申請了一個企業賬號負責將應用打包放在測試網址上供公司內部人員使用,這時候對應的推送環境為:生產環境,但是伺服器環境仍為測試環境. 就出現了推送收不到的情況,這個bug十分難找.