3

是否有适当的方法来取消注册视图控制器并将其注册到协议?

4

2 回答 2

4

正式遵守协议:

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, "i@:i");

class_addMethod()在这种情况下,请注意方法签名( 的第 4 个参数),请参阅文档以获取更多信息。

于 2012-12-17T00:43:25.610 回答
1

您可以使用 Objective-C 运行时方法

BOOL class_addProtocol(Class cls, Protocol *protocol)

为了在运行时向类添加协议,但据我所知,您无法删除它。

于 2012-12-17T00:40:44.670 回答