是否有正确的方法来取消注册并将视图控制器注册到协议?
答案 0 :(得分: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个参数),有关详细信息,请参阅documentation。
答案 1 :(得分:1)
您可以使用Objective-C Runtime方法
BOOL class_addProtocol(Class cls, Protocol *protocol)
为了在运行时向类中添加协议,但据我所知,你无法删除它。