Declare an ObjC parameter that's a Class conforming to a protocol

前端 未结 2 1520
-上瘾入骨i
-上瘾入骨i 2020-12-30 23:14

In Objective-C, it is possible to pass a class as a parameter to a method:

- (void) methodThatTakesClass:(Class)theClass;

And it is possibl

2条回答
  •  心在旅途
    2020-12-31 00:06

    Yes. The following is a valid program which will log the NSObject class.

    #import 
    void f(Class  c) {
        NSLog(@"%@",c);
    }
    int main() {
        f([NSObject class]);
    }
    

    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 )c;
    

提交回复
热议问题