国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 盐城市| 浑源县| 伊春市| 红原县| 民勤县| 读书| 荥阳市| 盐池县| 沐川县| 沁源县| 会泽县| 秦皇岛市| 新和县| 滁州市| 鄂州市| 赤壁市| 年辖:市辖区| 商洛市| 张北县| 清原| 福贡县| 宁阳县| 津南区| 南华县| 信宜市| 吴旗县| 岱山县| 武威市| 隆化县| 永年县| 义乌市| 和平县| 峨眉山市| 莒南县| 黄浦区| 静乐县| 夹江县| 兰溪市| 合江县| 巴彦淖尔市| 恭城|