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.
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]); }
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;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With