Objective-C中的正式和非正式協議有什麼區別?Objective-C中正式和非正式協議有什麼區別?
回答
正式和非正式協議
有兩種不同的協議, 正式和非正式:
的非正式協議是NSObject的一個類別,其中暗含 使得幾乎所有的對象採用者 該協議。 (一個類別是一個 語言功能,使您可以將 添加到類中,而無需 對其進行子類化。)在非正式協議中實施 方法的可選項爲 。在調用方法之前,調用對象檢查 目標對象是否實現了 它。在Objective-C 2.0中引入可選協議方法 之前,非正式協議對於 基本和AppKit類 實施委派的方式至關重要。
A 正式協議聲明客戶端類別 預計將實施的方法列表。正式的 協議有自己的聲明, 採用和類型檢查語法。 您可以使用@required和@optional 關鍵字指定需要實現的方法或可選的 。子類繼承其祖先採用的正式的 協議。 正式協議也可以採用其他協議。
正式協議是對Objective-C語言的擴展 。
所以「非正式協議」只是另一個類別的名稱? – Stas 2014-02-13 14:04:50
與谷歌相比,蘋果的文檔可怕。 – 2014-07-02 08:19:51
@JohnDoe vey非常認同,蘋果文件是殺手鐗。 – 2014-07-11 03:44:28
Objective-C語言提供了一種方法來正式聲明方法列表(包括聲明的屬性) 作爲協議。語言和運行時系統支持正式的協議。例如, 編譯器可以根據協議檢查類型,並且對象可以在運行時反省以報告是否它們符合協議 。
- 1. 類別與非正式協議
- 2. 在NSObject上使用非正式協議或使用可選方法的協議有什麼區別?
- 3. REST和HTTP協議有什麼區別?
- 4. WebSocket和STOMP協議有什麼區別?
- 5. 方法和協議有什麼區別
- 6. uwsgi協議和wsgi協議有什麼區別?
- 7. 非正式協議的需求是什麼?
- 8. 非正式協議在Objective-C?
- 9. 正則表達式中^和\ A,$和\ Z有什麼區別?
- 10. 正則表達式中的(*)和。*有什麼區別?
- 11. Perl正則表達式中的\ 1和$ 1有什麼區別?
- 12. \ b和\>,\ <在正則表達式中有什麼區別?
- 13. 正則表達式中的「a {1}」和「a」有什麼區別?
- 14. 正則表達式中的\(\((。+?)\)\)和\(\(\ s *(。+?)\ s * \)\)有什麼區別?
- 15. WebDriver協議中的keys和elementIdValue有什麼區別?
- 16. 在HTTP協議中ETag和Content-MD5有什麼區別?
- 17. ejabberd中MAM協議的0和1之間有什麼區別?
- 18. wsdl模式和非wsdl模式Web服務有什麼區別?
- 19. 自由格式和非自由格式JSON有什麼區別?
- 20. sed和awk正則表達式有什麼區別
- 21. 正則表達式量詞有什麼區別:。*和。*?
- 22. perl和java正則表達式能力有什麼區別?
- 23. ExpressJS:字符串模式和正則表達式中的?,+,*有什麼區別?
- 24. 正式描述協議的方式
- 25. 正則表達式中(。*)和(。*?)之間的區別是什麼?
- 26. 這2 @synthesize模式和建議哪個有什麼區別?
- 27. 在非正式協議中委託變量
- 28. DAO和DP模式有什麼區別?
- 29. 「::」和「sys」模式有什麼區別?
- 30. .jpg和.j2k格式有什麼區別?
關於在[這個交](HTTP非正式描述協議://計算器.com/questions/2010058/informal-protocol-in-objective-c) – byJeevan 2016-04-25 13:26:04