国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

iOS Swift創建代理協議的多種方式示例

2020-07-26 02:35:15
字體:
來源:轉載
供稿:網友

前言

本文主要給大家介紹了iOS Swift創建代理協議的各種方式,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧。

假如有一個類為 LXFView,現在要為這個類創建一個代理協議,我們該如何做呢?

首先,代理協議的命名方式:類名 + Delegatev

protocol LXFViewDelegate { func view(_ view: LXFView)}

當我們創建的協議遵守其它協議的情況下,只是這樣寫并不會報錯,接下來我們在LXFView中添加一個代理屬性,為避免循環引用,代理屬性需要用weak修飾

class LXFPageView: UIView {  weak var delegate: LXFViewDelegate? }

此時就報錯了,提示如下

'weak' may only be applied to class and class-bound protocol types, not 'LXFViewDelegate'


意思是weak只能修飾一個類或者類綁定協議的類型

正如提示一樣,我們當前的代理并非是一個類或者類綁定協議的類型

當前我們這個協議不僅可以被類遵守,還可以被結構體和枚舉所遵守(這里不演示了),這無法達到weak的要求,那怎么辦呢?

解決辦法有兩個:

辦法1

直接在協議的后面寫上【: class】或者【: NSObjectProtocol】

protocol LXFPageViewDelegate: class// 或者protocol LXFPageViewDelegate: NSObjectProtocol

這種方式下推薦【: class】,相比之下更為輕量級

辦法2

在protocol前面加上【@objc】,表示objc類型的協議

@objc protocol LXFPageViewDelegate

這種方式下的優點是協議中的方法不強制實現

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 云和县| 北票市| 崇明县| 棋牌| 华容县| 垫江县| 桂平市| 朝阳区| 同德县| 伊通| 甘德县| 哈密市| 阜南县| 武城县| 博白县| 天镇县| 南丰县| 泰和县| 长泰县| 徐水县| 松滋市| 武安市| 遂川县| 祁阳县| 东乌| 阿巴嘎旗| 巴彦县| 阳江市| 大埔区| 任丘市| 景谷| 房产| 永泰县| 乌兰察布市| 新竹县| 百色市| 萨嘎县| 专栏| 专栏| 德昌县| 晋城|