在Objective-C中,可以将类作为参数传递给方法:
- (void) methodThatTakesClass:(Class)theClass;
并且可以将符合协议(protocol)的实例作为参数传递:
- (void) myConformInstance:(id <MyProtocol>)theObject;
可以使用组合功能吗?一种采用符合某种协议(protocol)的类的方法。
最佳答案
是。以下是一个有效的程序,它将记录NSObject类。
#import <Foundation/Foundation.h>
void f(Class <NSObject> c) {
NSLog(@"%@",c);
}
int main() {
f([NSObject class]);
}
如果您尝试传递不符合NSObject的类(例如
Object
类),这将导致编译器错误。您也可以将其用于方法。- (void)printClass:(Class <NSObject>)c;
关于objective-c - 声明符合协议(protocol)的Class的ObjC参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6931544/