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