91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-10-01 09:27:44 來源:腳本之家 閱讀:257 作者:LinXunFeng 欄目:移動開發

前言

本文主要給大家介紹了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'

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

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

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

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

解決辦法有兩個:

辦法1

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

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

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

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

辦法2

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

@objc protocol LXFPageViewDelegate

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

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

總結

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

隆回县| 神池县| 辽阳县| 故城县| 星子县| 隆安县| 新巴尔虎右旗| 扬州市| 吉隆县| 庆云县| 探索| 桦川县| 江津市| 手游| 商城县| SHOW| 宣化县| 上犹县| 雷州市| 宾川县| 丹巴县| 松潘县| 洛隆县| 九寨沟县| 文山县| 嘉峪关市| 柞水县| 宜宾县| 孟州市| 修水县| 香港| 泗水县| 海盐县| 绿春县| 景德镇市| 新余市| 隆林| 马鞍山市| 连南| 绥滨县| 永新县|