首页
/
每日頭條
/
圖文
/
ios怎麼設置多個協議
ios怎麼設置多個協議
更新时间:2026-03-10 15:33:00

首先,協議(protocol)不是對象,是Objective-C的一種語法,用于聲明一組方法,約定調用者可以使用實現者的哪些方法。

協議不能被單獨實例化,隻能由類來明文聲明,并具體實現。

用Xcode8添加協議

基本步驟與iOS開發基礎:如何使用類别(Category) 相似,隻是文件類型選擇協議:

ios怎麼設置多個協議(iOS開發基礎協議代理)1

協議聲明:

ios怎麼設置多個協議(iOS開發基礎協議代理)2

@optional表示實現者可自由選擇是否實現;

@required表示必須實現。

聲明繼承協議:

ios怎麼設置多個協議(iOS開發基礎協議代理)3

協議不但可以繼承的,并且可以多繼承,在尖括号中用逗号分隔:

ios怎麼設置多個協議(iOS開發基礎協議代理)4

這裡NSObject是個協議名,并不是類名。如果實現者聲明XSProtocol,則需要同時實現NSObject, NSCopying兩套協議。

協議的實現:

如我們常用的UITableView的數據源和代理,可以用同一個類來實現:

ios怎麼設置多個協議(iOS開發基礎協議代理)5

@implementation部分,實現協議聲明的方法:

ios怎麼設置多個協議(iOS開發基礎協議代理)6

編譯器會告訴你哪些必要的(聲明為@required的)協議方法沒有實現:

ios怎麼設置多個協議(iOS開發基礎協議代理)7

協議的使用:

1. 指定對象需要實現的方法:

ios怎麼設置多個協議(iOS開發基礎協議代理)8

一看這樣的聲明,就知道該方法需要一個會編程的學生,

如果傳入一個普通的Student對象,會引發一個警告:

ios怎麼設置多個協議(iOS開發基礎協議代理)9

所以協議可以幫助我們寫出自我說明的代碼,并且編譯器會幫助我們檢查。

2. 調用時,先判斷被調用者是否實現某方法:

ios怎麼設置多個協議(iOS開發基礎協議代理)10

可能有些童鞋會想,每次調用方法前(即使不是協議方法)都調用一次respondsToSelector,不就萬無一失了嗎?很不幸,respondsToSelector會消耗較多的資源,降低程序的執行效率,因此建議新手在調用協議方法時必須進行檢查,等經驗積累後,再根據具體需要自行選擇是否檢查,比如需要提高性能時,可以緩存respondsToSelector的判斷結果。

什麼是代理?

代理(delegate)是A對象指定B對象處理某些特定任務的設計模式,這裡B對象就成為了A對象的“代理”。

ios怎麼設置多個協議(iOS開發基礎協議代理)11

在Objective-C中,協議是實現代理模式的一種方式,

協議提供了面向接口編程的一種方式,使用協議,調用者隻需關心被調用者是否能做某事,而不關心被調用者具體是誰。

這就是為什麼代理對象總是被聲明成id,也就是說,隻要實現了協議,任何類都可以成為代理。

理解了代理模式,這裡需要提醒使用協議的一個注意點:

聲明為代理的屬性,需要定義為 weak

ios怎麼設置多個協議(iOS開發基礎協議代理)12

因為B将自己聲明為A的代理,必然也會保留A,這樣相互保留的關系很容易形成“保留環”,造成内存無法釋放。

小結

協議是Objective-C 的一種語法,聲明了一套方法,而代理是一種設計模式,可以用協議來實現。

使用協議要注意三個問題:

  1. 指定對象需要實現的方法。

  2. 調用時,先判斷被調用者是否實現某方法。

  3. 聲明為代理的屬性,需要定義為 weak。

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
南甯濕地公園考拉河(南甯那考河濕地公園)
南甯濕地公園考拉河(南甯那考河濕地公園)
  今天我們來介紹一個鹹魚是如何翻身的。那考河,原本是一條臭水溝,也沒有什麼人關注,畢竟哪裡都不缺臭水溝。一個臭水溝都是讓人避而不及的。但是突然有一天……它一改過去的容貌,變成了如今的濕地公園。   公園據說總投資超過11個億,使用了各種技術用來淨化水體。如今的那考河早已不是過去的臭水溝了,兩岸有梯田式遞進的淨水植物帶。還種植的大片的花田。      公園是...
2026-03-10
畫江湖之不良人完整(李硯畫江湖之不良人正在熱播)
畫江湖之不良人完整(李硯畫江湖之不良人正在熱播)
     近日,改編自 國漫 IP 《 畫江湖之不良人 》,由 童輝、王豐 執導, 李硯、曹賽亞、陳添祥、何依蔓、于雷等主演,正在芒果 tv 全網獨播。 該劇自開播以來 備受關注,角色話題熱議不斷。這也是李硯繼上一部院線作品《天之書》之後的又一新作,也是他少有的古裝角色之一。      李硯在《畫江湖之不良人》中飾演的男主李星雲是一名神秘的孤兒,機緣巧合下被...
2026-03-10
數學活動好吃的水果教案(愛吃的水果教學設計)
數學活動好吃的水果教案(愛吃的水果教學設計)
  教師資格面試考試難度越來越大,其中一方面的難度就體現在課型的增多。小學語文除了閱讀課,還會考查識字寫字課、拼音教學課和口語交際課。其中口語交際作為日常教學中不太常見的課型,難度更大一些,今天中公教師考試研究院以一篇《愛吃的水果》為例,提供了較為詳細的教學設計,看看口語交際教學該如何教。   一、教學目标   1.抓住水果的特點,條理清晰,生動準确地描述水...
2026-03-10
北轅南轍電視劇鄭業成路透(鄭業成再迎新劇一念永恒)
北轅南轍電視劇鄭業成路透(鄭業成再迎新劇一念永恒)
  《北轍南轅》後,鄭業成再迎新劇《一念永恒》,搭檔孫怡、劉海寬   最近,《北轍南轅》正在熱播。值得關注的是,該劇雖然熱度很高,但口碑卻很一般,目前評分隻有4.7分。不過,這也絲毫沒能阻止觀衆對這部劇的喜愛,上線11天,在熱度榜上也從未跌出過TOP3,俨然掀起了追劇熱潮。         大咖相繼客串讓這部劇“彩蛋”不斷,宋丹丹、黃渤、張一山、朱一龍等大咖...
2026-03-10
word表格出現兩頁怎麼解決(Word表格從中間斷了)
word表格出現兩頁怎麼解決(Word表格從中間斷了)
  簡介:word中的表格有時候從中間斷開,分布在兩頁,顯得非常難看。如圖所示:      圖1   問:這是什麼原因?答:因為文字内容所占據的空間太大,表格在一頁放不下去,自動溢出到下一頁。   問:怎麼調整到一頁?答:把字号縮小,把行距縮小,删除多餘的段落标記、删減不必要的内容等。當縮小到一定程度時,表格會自動變成一頁。   如圖所示:      圖2 ...
2026-03-10
Copyright 2023-2026 - www.tftnews.com All Rights Reserved