【发布时间】:2011-10-26 12:55:42
【问题描述】:
有没有办法给一个符合特定协议的类作为参数?
起初我怀着一点希望尝试的是这样的:
-(NSString *) getKeyForMyProtocolClass(Class<MyProtocol>)aClass
但这会导致
[aClass superclass];
给出警告“找到实例方法'超类'而不是类方法'超类'”。我收到了同样的 conformsToProtocol 警告:。
因为当参数是 (Class)aClass 时它没有给出这样的警告,看来 Class
我不应该发送 NSObject
我可以使用 conformsToProtocol 进行检查,但是我必须返回一个零值,这只是乱七八糟的。我宁愿在编译时停止这个问题。
那么简而言之,是否存在符合协议的类的类型声明?
【问题讨论】:
-
我有一个类可以接收改变其行为的扩展。它将其扩展存储在字典中,键取决于类。它不知道哪些类可以扩展它。关键是实现协议的最顶层超类,这样一个类和它的超类就不会做同样的事情,所以其他类也可以询问它是否有某个扩展,而不必知道该扩展类的所有子类.我已经准备好了,除了方法签名,如果给定的类没有实现协议,它现在强制我返回 nil。
-
注意:我好久没用Objective-C了。我不再寻找这个问题的答案,也没有资格判断和接受任何答案。我认为这个问题目前属于社区投票。
标签: objective-c class