日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Protocol(基本语法和使用场景)

發布時間:2023/12/16 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Protocol(基本语法和使用场景) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
import UIKitclass ViewController: UIViewController {//協議的幾種定義格式:1.普通格式:protocol 協議名稱{協議體} 2.繼承格式:protocol 協議名稱:協議1,協議2...{協議體} 3.類特定協議格式1//@objc protocol 協議名稱{協議體} 4.類特定協議格式2 protocol 協議名稱: class {協議體}//在swift中,協議可以簡單形象比喻為一個藍圖,規定了你的類,枚舉或者結構體所需要遵循的需求。具體對于協議的實現可以在類,枚舉或者結構體內來完成。//1.協議命名時首字母應大寫//2.協議中定義屬性時,必須使用var//3.實現協議時,不能改變屬性的名字和類型//4.協議中可以定義實例屬性//5.屬性后面跟隨{get}表示實現此協議的地方既可以把屬性定義為變量var也可以定義為常量let//6.屬性后面的{get set}表示實現此協議的地方只能把該屬性定義為變量var,而不能是常量let//7.協議中即可以定義實例方法//8.協議可以繼承且可以多繼承//9.標準格式的協議可以被類,結構體和枚舉三種類型來實現,但是類特定協議格式1和類特定協議格式2的協議只能被類類型實現。override func viewDidLoad() {super.viewDidLoad()} }//--------------類特定協議格式@objc protocol 協議名稱{協議體} @objc protocol Villa {//土豪朋友必須知道有多少層 --- 實例屬性 {get}表示這個在具體實現體中可以是let常量或者var變量的形式var floors: Int {get}//土豪朋友必須知道要什么風格var style:String {get}//別墅必須有門可以打開func openGate() -> String//別墅必須要有空調func openAirCondition() -> Bool//別墅如果有個狗窩更好 optional是可選的,不一定必須要實現@objc optional func hasDogHouse() ->Bool } //土豪朋友以前也是碼農,雖然蓋了別墅,但必須有一個工作室寫程序------------類特定協議格式2 protocol 協議名稱: class {協議體} protocol Workshop:class {//必須要有上好的桌子var desk: String {get set}//必須要有一本swift編程的書var book:String{get}//可以編程序func program(code: String) -> Bool//可以調試func debug() } //碼農離不開兩樣東西,電腦和游戲,必須有個游戲屋-----------------普通格式協議 protocol GameRoom {var games:String {get} }//最終土豪朋友拿著這份組合協議的要求去招標-------多重協議繼承 protocol CombineRequirement: Villa, Workshop {static var name: String {get}static func finish()->Bool }//韓國鳥叔建筑有限公司給出的名為"青城山別墅"的方案,實現了別墅建設要求的組合協議 class Qcsbs: CombineRequirement {static var name = "lisa"//villa 協議的實現var floors: Int {return 4}var style: String {return "全歐式建筑"}func openGate() -> String {return "全自動門,自由打開!"}func openAirCondition() -> Bool {return true}//Workshop協議的實現var desk: String {get {return "碼農專用辦公桌"}set {debugPrint("新的值為:\(newValue)")}}var book: String {return "老碼說編程之玩轉swift江湖"}func program(code: String) -> Bool {debugPrint("土豪哥寫的swift程序:\(code)")return true}func debug() {debugPrint("調試通過!")}static func finish() -> Bool {return true}//成都老碼農團隊也參與競標,不過勢單力薄,只能給出游戲室的方案---------類特定協議只能在class類中被實現,不能在結構體或者枚舉里面實現。 比如這里如果寫成繼承自Workshop就會報錯Non-class type 'Qcsbs.OldCodeGameRoom' cannot conform to class protocol 'Workshop'struct OldCodeGameRoom: GameRoom {var games = "最終幻想,穿越火線"} }

?

總結

以上是生活随笔為你收集整理的Protocol(基本语法和使用场景)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。