Protocol(基本語法和使用場景)

2021-09-28 22:58:57 字數 2105 閱讀 5749

import uikit

class viewcontroller: uiviewcontroller 2.繼承格式:protocol 協議名稱:協議1,協議2... 3.類特定協議格式1

//@objc protocol 協議名稱 4.類特定協議格式2 protocol 協議名稱: class

//在swift中,協議可以簡單形象比喻為乙個藍圖,規定了你的類,列舉或者結構體所需要遵循的需求。具體對於協議的實現可以在類,列舉或者結構體內來完成。

//1.協議命名時首字母應大寫

//2.協議中定義屬性時,必須使用var

//3.實現協議時,不能改變屬性的名字和型別

//4.協議中可以定義例項屬性

//5.屬性後面跟隨表示實現此協議的地方既可以把屬性定義為變數var也可以定義為常量let

//6.屬性後面的表示實現此協議的地方只能把該屬性定義為變數var,而不能是常量let

//7.協議中即可以定義例項方法

//8.協議可以繼承且可以多繼承

//9.標準格式的協議可以被類,結構體和列舉三種型別來實現,但是類特定協議格式1和類特定協議格式2的協議只能被類型別實現。

override func viewdidload()

}//--------------類特定協議格式@objc protocol 協議名稱

@objc protocol villa 表示這個在具體實現體中可以是let常量或者var變數的形式

var floors: int

//土豪朋友必須知道要什麼風格

var style:string

//別墅必須有門可以開啟

func opengate() -> string

//別墅必須要有空調

func openaircondition() -> bool

//別墅如果有個狗窩更好 optional是可選的,不一定必須要實現

@objc optional func hasdoghouse() ->bool

}//土豪朋友以前也是碼農,雖然蓋了別墅,但必須有乙個工作室寫程式------------類特定協議格式2 protocol 協議名稱: class

protocol workshop:class

//必須要有一本swift程式設計的書

var book:string

//可以程式設計序

func program(code: string) -> bool

//可以除錯

func debug()

}//碼農離不開兩樣東西,電腦和遊戲,必須有個遊戲屋-----------------普通格式協議

protocol gameroom

}//最終土豪朋友拿著這份組合協議的要求去招標-------多重協議繼承

protocol combinerequirement: villa, workshop

static func finish()->bool

}//南韓鳥叔建築****給出的名為"青城山別墅"的方案,實現了別墅建設要求的組合協議

class qcsbs: combinerequirement

var style: string

func opengate() -> string

func openaircondition() -> bool

//workshop協議的實現

var desk: string

set

}var book: string

func program(code: string) -> bool

func debug()

static func finish() -> bool

//成都老碼農團隊也參與競標,不過勢單力薄,只能給出遊戲室的方案---------類特定協議只能在class類中被實現,不能在結構體或者列舉裡面實現。 比如這裡如果寫成繼承自workshop就會報錯non-class type 'qcsbs.oldcodegameroom' cannot conform to class protocol 'workshop'

struct oldcodegameroom: gameroom

}

protocol簡單使用

可以宣告一大堆方法 不能生命成員變數 只要某個類遵循了這個協議,就相當於擁有了這個協議中的所有方法宣告 只要父類遵循了某個協議,就相當於子類也遵守了 協議的檔案只有乙個 protocal myprotocal end乙個類想要遵守乙個協議 inte ce person object 乙個類遵守乙個協...

Cmake基本語法和使用

1.初識cmakelist.txt檔案 說明 cmake語法中,命令名字不區分大小寫,但引數和變數有區分。cmake minimum required version 2.6 宣告需求的cmake最低版本 project projname 專案名稱 非強制性,但最好加上 set src list m...

OC學習 protocol的使用

protocol 協議 可以用來宣告一堆的方法。protocol 協議名稱 方法的宣告列表 end 例如 protocol mydogprotocol void dogtest end 1 乙個類遵守協議 inte ce 類名 父類名 協議名稱1,協議名稱2,end 例如 inte ce hashi...