有没有办法给出一个符合某个协议的类作为参数?
我一开始尝试的是带着一点希望,这是:
-(NSString *) getKeyForMyProtocolClass(Class<MyProtocol>)aClass
Run Code Online (Sandbox Code Playgroud)
但那导致了
[aClass superclass];
Run Code Online (Sandbox Code Playgroud)
给出警告"实例方法'超类'找到而不是类方法'超类'".我对conformsToProtocol得到了同样的警告:
因为当参数是(Class)aClass时它没有给出这样的警告,所以Class <MyProtocol>实际上并不是Class类型.
我不应该发送NSObject <MyProtocol>,因为我需要根据类及其超类确定正确的密钥,并且只有在没有设置该密钥的情况下才创建和添加新对象.
我可以用conformsToProtocol检查,但是我必须返回一个非常糟糕的nil值.我宁愿在编译时停止这个问题.
简而言之,是否有符合协议的类的类型声明?
您只需对类对象进行类型转换即可防止编译器发出警告。我能够执行以下操作:
- (void)tempMethod:(Class<NSObject>)klass {
id a = [(Class)klass superclass];
NSLog(@"%@", a);
}
Run Code Online (Sandbox Code Playgroud)
Class object由于您知道要传递的object( ) 的类型,因此应该可以正常工作。
| 归档时间: |
|
| 查看次数: |
558 次 |
| 最近记录: |