在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/

10-12 21:28