是否有适当的方法来取消注册视图控制器并将其注册到协议?
问问题
200 次
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 回答