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

首頁 > 系統(tǒng) > iOS > 正文

iOS Swift創(chuàng)建代理協(xié)議的多種方式示例

2019-10-21 18:43:00
字體:
供稿:網(wǎng)友

前言

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

假如有一個類為 LXFView,現(xiàn)在要為這個類創(chuàng)建一個代理協(xié)議,我們該如何做呢?

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

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

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

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

此時就報錯了,提示如下

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

ios,代理協(xié)議,swift

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

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

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

解決辦法有兩個:

辦法1

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

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

ios,代理協(xié)議,swift

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

辦法2

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

@objc protocol LXFPageViewDelegate

這種方式下的優(yōu)點是協(xié)議中的方法不強制實現(xiàn)

ios,代理協(xié)議,swift

總結

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


注:相關教程知識閱讀請移步到IOS開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 汽车| 襄樊市| 绥江县| 兴化市| 沛县| 贵德县| 册亨县| 锡林浩特市| 务川| 永泰县| 潍坊市| 盐亭县| 德庆县| 红安县| 兖州市| 襄汾县| 南涧| 邵阳市| 巴林左旗| 蒙自县| 贺兰县| 来凤县| 德令哈市| 德清县| 彭山县| 台江县| 福泉市| 理塘县| 应城市| 石城县| 慈溪市| 南平市| 辉南县| 上犹县| 尼玛县| 会东县| 巨野县| 万盛区| 甘德县| 庆云县| 广元市|