一句話筆記(18)

一句話筆記,某段時間內遇到或看到的某個可記錄的點。 2017-03-14

  • 注意 某些方法的 執(zhí)行順序
  • UITapGestureRecognizer 點擊事件偶爾失效
  • [NSKeyedUnarchiver decodeObjectForKey:]: cannot decode object of class 錯誤
  • 設置同一個色值時,顯示顏色卻不同 ?
  • 什么情況下讀取 [AccountManager sharedManager].accountModel.userID 會為空
一、注意 某些方法的 執(zhí)行順序
 if (self.testBlock) {
      self.testBlock();
 }
 [self dismissViewControllerAnimated:YES completion:^{}];
[self dismissViewControllerAnimated:YES completion:^{
      if (self.testBlock) {
          self.testBlock();
      }
}];
[self dismissViewControllerAnimated:YES completion:^{}];
if (self.testBlock) {
      self.testBlock();
}

上述三者在執(zhí)行某個問題時,也許效果一樣,第二種會有點卡頓,第一種和第三種基本一樣,但是一定注意第一種的執(zhí)行順序,有時這樣寫會遇到某種意想不到的BUG,可能外部調用時也會寫 [self dismissViewControllerAnimated:YES completion:^{}];, 但是實際上可能的是 那個 self 還沒有被釋放掉,而導致問題啦。

另外注意 第二種和第三種的方法不一樣,至于使用哪一種看具體需求情況。

dismissViewControllerAnimated:

畢竟這個Block 里面的執(zhí)行時間是在 viewDidDisappear 之后的。

二、UITapGestureRecognizer 點擊事件偶爾失效

在某個界面直接添加 UITapGestureRecognizer 發(fā)現(xiàn)其偶爾會失效,而且這個概率還比較高,但一時確實找不到原因。。。

后來發(fā)現(xiàn)是其實是我點擊錯了,想想以后遇到改問題不要死扣。。。

另外,也要注意常規(guī)失效的情況:

  • 父視圖的 userInteractionEnabled 交互事件沒有開啟
  • 子視圖超出父視圖的范圍
  • 設置 UITapGestureRecognizer 的代理事件中進行了阻攔
    - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
      if () {
            return NO;
      }
    

}




>#####三、[NSKeyedUnarchiver decodeObjectForKey:]: cannot decode object of class 錯誤


![錯誤的圖片](http://upload-images.jianshu.io/upload_images/784630-d4b9ff3ae0954eab.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

其實從圖片中打印的信息就可以直接 看出來,指的是無法解碼, 因為某個 Key 不存在,在我們此處 CategoryModel == > GBCategoryModel 導致出錯的,對于此類問題場景應該是改動歸檔啦,所以有兩種解決方法:
* 當例如 CategoryModel == > GBCategoryModel  切換后,直接先刪除該路徑
* 或者 說對之前 CategoryModel 此處做兼容處理。

PS: 以前對這類問題,會有點懵,最近發(fā)現(xiàn)對這種問題,其實只要細細看打印出的消息,看懂了基本上解決了一大半。


>#####四、設置同一個色值時,顯示顏色卻不同 ?

這個問題是在 我設置一個線條顏色 和 字體顏色時,設置同一種顏色,卻是現(xiàn)實顏色不一樣,不知道啥情況,很是郁悶...

![同一個色值,但是該人感覺確不一樣](http://upload-images.jianshu.io/upload_images/784630-b9bdb994eee1031a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

就例如上述,給的都是同一個色值,但是展示的效果卻是不一樣。

self.testView.backgroundColor = [UIColor orangeColor];
self.testLabel.textColor = [UIColor orangeColor];


暫時想到一個取巧的方法, 從色覺效果看上去會是接近一些的

self.testView.backgroundColor = [[UIColor redColor] colorWithAlphaComponent:0.9];
self.testLabel.textColor = [UIColor orangeColor];

但是木有正規(guī)理由,如有朋友有正確的方法設置,讓其顯示的從色值上一樣,歡迎告知。
PS: 這個問題在 模擬器上測試特別明顯,在真機上差距會小一些。



>#####五、什么情況下讀取 [AccountManager sharedManager].accountModel.userID 會為空

這個問題是我們后臺突然跑過來說,我們某個接口的 userId 傳入的是空,然而我很意外的是我們此處只有登錄狀態(tài)下才會跑這個接口,同時我們都是直接讀取的  [AccountManager sharedManager].accountModel.userID  的值,為什么會為空?

正常跑的情況下,跑到那個接口處已經(jīng)經(jīng)歷幾個接口才到那,而前面的幾個接口必然也要傳 userID,而到那接口時,是突然的讀取該值失敗。 或者是說,有人惡意單獨跑這個接口。

然后下面好好想想,什么情況下會讀取值失敗,而且是突然的
* 第一反應是崩潰的情況下,然而應該不是,否則數(shù)據(jù)不能上傳到后臺
* 第二,在想這個值是怎樣保存的,發(fā)現(xiàn)是 NSCoding 實現(xiàn)的 也應該是沒有問題的

暫時一下確實沒有想到什么情況下,會突然讀取不到該值的情況 ? 如有朋友知道麻煩告知。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,923評論 18 139
  • 國家電網(wǎng)公司企業(yè)標準(Q/GDW)- 面向對象的用電信息數(shù)據(jù)交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 11,145評論 6 13
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,285評論 25 708
  • 已入涼秋,早上賴床的時間會越來越多了,幸虧有手機,躲在被窩里也能干點什么。 開始用手機寫作是個好想法,因為清晨我浪...
    云卷云舒0412閱讀 146評論 0 0
  • 你有沒有試過明明知道是死局仍舊硬著頭皮死撐,不肯認輸? 記得小時候有一次和姐姐打撲克,忘記是哪一種玩法,只記得我就...
    luckyactor閱讀 259評論 0 3