2012-12-17 128 views

回答

3

正式地符合一协议:

class_addProtocol([MyViewController class], @protocol(SomeProtocol)); 

甚至更​​动态:

class_addProtocol(objc_getClass("MyViewController"), objc_getProtocol("SomeProtocol")); 

实际添加方法实现的一类:

// - (int)someMethod:(int)arg; 
int someMethod(id self, SEL _cmd, int arg) 
{ 
    return arg * 2; 
} 

class_addMethod([MyViewController class], @selector(someMethod:), (IMP)someMethod, "[email protected]:i"); 

当心方法签名(在这种情况下,参见class_addMethod())参见documentation更多信息。

1

可以使用Objective-C的运行方法

BOOL class_addProtocol(Class cls, Protocol *protocol) 

以协议在运行时添加的一类,但据我所知,你无法将其删除。