日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

iOS 代理设计模式

發布時間:2025/6/15 asp.net 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS 代理设计模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在項目中經常會用到代理的設計模式,這是iOS中一種消息傳遞的方式,也可以通過這種方式傳遞一些參數.

在項目中,剛開始我是用一些代理來傳遞參數的,但是慢慢覺得代理的代碼比較block多,所以就更多的使用了block.

前幾天突然想到了代理的設計模式,回頭翻看了下,

protocol--協議

  協議是公共的定義,如果只是某個類使用,我們常做的就是寫在某個類中。如果是多個類都是用同一個協議,建議創建一個Protocol文件,在這個文件中定義協議。遵循的協議可以被繼承,例如我們常用的UITableView,由于繼承自UIScrollView的緣故,所以也將UIScrollViewDelegate繼承了過來,我們可以通過代理方法獲取UITableView偏移量等狀態參數。

  協議可以繼承其他協議,并且可以繼承多個協議,在iOS中對象是不支持多繼承的,但是協議可以.

代理對象 --

  代理對象在很多情況下其實是可以復用的,可以創建多個代理對象為對個委托方服務.

代理內存管理

  delegate的屬性都是用weak,因為strong類型的指針會造成強引用,必定會影響一個對象的生命周期,這也就會形成循環引用.

  weak和assign是一種"非擁有關系"的指針,通過這兩種修飾符修飾的指針變量,都不會改變被引用對象的引用計數.但是在一個對象被釋放后,weak會自動將指針指向nil,而assign則不會.在iOS中,向nil發送消息時不會導致崩潰的,所以assign就會導致野指針的錯誤unrecognized selector sent to instance。

?

代理和block的選擇

  在多個消息傳遞時應該使用delegate.這個時候的block不便于維護而且臃腫.

  一個委托對象的代理屬性只能有一個代理對象,如果想要委托對象調用多個代理對象的回調應該用block.

  代理是可選的,而block在方法調用的時候只能通過將某個參數傳遞一個nil進去.

  有時候需要用到外面的屬性應該用block,代理是另外的方法,屬性不容易傳遞

轉載于:https://www.cnblogs.com/ritian/p/6269863.html

總結

以上是生活随笔為你收集整理的iOS 代理设计模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。