本文介绍了声明一个ObjC参数,该参数是符合协议的Class的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在Objective-C中,可以将类作为参数传递给方法:
In Objective-C, it is possible to pass a class as a parameter to a method:
- (void) methodThatTakesClass:(Class)theClass;
并且可以将符合协议的实例作为参数传递:
And it is possible to pass an instance that is conforming to a protocol as a parameter:
- (void) myConformInstance:(id <MyProtocol>)theObject;
是否可以使用组合功能?一种采用符合特定协议的类的方法.
Is it possible to use the combined functionality? A method which takes a class which is conforming to a certain protocol.
推荐答案
是.以下是一个有效的程序,它将记录NSObject类.
Yes. The following is a valid program which will log the NSObject class.
#import <Foundation/Foundation.h>
void f(Class <NSObject> c) {
NSLog(@"%@",c);
}
int main() {
f([NSObject class]);
}
如果您尝试传递不符合NSObject的类(例如Object
类),这将导致编译器错误.您也可以将其用于方法.
This would cause a compiler error if you tried to pass a class which doesn't conform to NSObject, such as the Object
class. You can also use it for methods.
- (void)printClass:(Class <NSObject>)c;
这篇关于声明一个ObjC参数,该参数是符合协议的Class的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!