协议是否可以私下继承,以便在下一个继承级别不应该访问?目标c是否支持协议的私有继承
2
A
回答
4
被覆盖Objective-C的没有“私有继承”(或“私人一致性”)C++那样的方式。
您可以遵守协议,而不必在头文件中宣传您的一致性。
@interface MyObject() <NSCoding>
@end
声明一个类扩展,增加了NSCoding
议定书MyObject
类:例如,你可以,如果你把这个上面你@implementation
语句进行.m
文件符合NSCoding
“秘密”。
然而,任何人(包括子类),可以问你是否采用协议:
[[MyObject class] conformsToProtocol:@protocol(NSCoding)]
// returns YES
[[MySubObject class] conformsToProtocol:@protocol(NSCoding)]
// also returns YES, if MySubObject is a subclass of MyObject
,任何人都可以发送NSCoding
消息到MyObject
由第一投射对象:
[(id<NSCoding>)someObject encodeWithCoder:someCoder]
如果您创建了MyObject
的子类,并且您的子类也声明它符合NSCoding
,那么几乎可以肯定需要从其自己的encodeWithCoder:
中调用[super encodeWithCoder:]
HOD。
0
不,这是不可能的,因为语言设计。
此外,因为任何方法都可以被覆盖,所以如果来自正确的类别,则无法确定被调用的方法。
可能有一些黑客可以直接使用调用您想要的方法,但这并不容易,甚至可能无法实现。
0
协议或以其它方式,也没有办法阻止方法由子类
相关问题
- 1. 目标c继承/协议混淆:UITableViewController
- 2. 继承支持的目标c
- 3. 是否支持CSS继承
- 4. OpenLDAP是否支持继承?
- 5. C语言是否支持继承?
- 6. C#是否支持多重继承4.0?
- 7. 是否可以继承UiApplicationDelegate协议?
- 8. 类是否继承objective-c中的协议?
- 9. StackDriver是否支持Syslog协议?
- 10. 施乐DocuShare是否支持CMIS协议?
- 11. Azure IoT Hub是否支持CoAP协议?
- 12. iPad是否支持file://协议?
- 13. VM协议是否支持两个JVM?
- 14. Windows Azure是否支持SPDY协议?
- 15. C#中的私有继承?
- 16. 属性是否支持继承?
- 17. .net BinaryFormatter是否支持继承?
- 18. 房间是否支持实体继承?
- 19. E语言是否支持多继承?
- 20. mod_mono是否支持web.config继承?
- 21. 协议方法的继承
- 22. 继承协议的URL
- 23. Objective-C协议vs继承与扩展?
- 24. 支持继承
- 25. C++ - defenition - 私有继承
- 26. 协议继承在swift中
- 27. 继承通用协议
- 28. 使用Swift协议继承
- 29. 是否有支持协议相关URL的URL缩短服务?
- 30. 目标C是否支持caldav?
我想(meta-)的问题是“你为什么要这么做?” – nielsbot 2012-08-08 07:37:17
@nielsbot我会说这个元问题。 :) – 2012-08-08 07:38:00
通过私下继承“我的意思是,如果我继承了一个协议”ProtocolBase“,以便它的回调应该是同一个对象(类A),但是当我们继承这个类到另一个类时,假设B然后b不应该得到协议功能超载 – vinsi 2012-08-08 07:52:40