所有的設計模式最終目的都是乙個,就是要解耦。解耦:是指任何模組之間不存在硬關聯,都是可以對關聯進行修改與替換。這是提供系統的可擴充套件性和可維護性的基礎,降低模組、元件之間的耦合度是開發人員應該牢記的乙個程式設計準側。
觀察者模式是一種行為型設計模式。行為型設計模式討論的是模組實體在執行過程中的行為模式,重點在於行為動作,而觀察者模式說的就是某個模組實體發生變化所引起其他模組的行為動作。
觀察者模式存在兩種角色
角色1:被觀察者(observed object)
角色2:觀察者(observers)
在ios開發,使用kvo的時候,很多請情況下要求觀察者在物件銷毀之前取消對某乙個被觀察者的觀察行為,需要操作:
a(被觀察者) remove b(觀察者)
那麼有一些問題存在:
1. 是否b (觀察者)是否對a(被觀察者)實施過觀察行為。
2. a(被觀察者)的觀察者容器中是否存在b(觀察者)。
iOS KVO的實現原理
全稱是key value observing,翻譯成鍵值觀察。提供了一種當其它物件屬性被修改的時候能通知當前物件的機制。再mvc大行其道的cocoa中,kvo機制很適合實現model和controller類之間的通訊。鍵值編碼 kvc 和鍵值觀察 kvo 是根據isa swizzling技術來實現的...
Glide開源庫存在的暗坑
glide庫想必大家都非常喜歡使用,無論是載入gif或者bitmap圖,都如絲般順滑!但是,但是,就在這個但是上,你是否遇到過glide載入失敗的情況呢?問題追蹤過程 1.url位址有問題?抓到url放到瀏覽器,完全能正常展示 2.glide有bug?但是別的手機都是ok,都能正常展示呢?這怎麼解釋...
Intel的移位指令存在的坑
前幾天在調路由下發的時候碰到乙個很詭異的錯誤,計算機執行的結果跟我手算的結果就是對不到一塊兒,當時的 是這樣的 ina.ifra mask.sin addr.s addr htonl 0xffffffffu prefix len 其中prefix len的值為32。自己預想的結果應該是右移32bit...