国产探花免费观看_亚洲丰满少妇自慰呻吟_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

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

總結

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新密市| 凤庆县| 岳阳市| 晋宁县| 牡丹江市| 缙云县| 西贡区| 六安市| 泾阳县| 丹东市| 平定县| 宜兴市| 平江县| 津市市| 兰考县| 绥芬河市| 获嘉县| 宁化县| 万荣县| 汉中市| 灵川县| 垣曲县| 安多县| 无棣县| 肃北| 锡林郭勒盟| 政和县| 永福县| 拉孜县| 新竹市| 杨浦区| 西丰县| 婺源县| 福建省| 青阳县| 天等县| 焉耆| 德保县| 赤城县| 扶沟县| 榕江县|