创建一个名为QihongwangView
的类,他是UIView
的子类
Class newClass = objc_allocateClassPair([UIView class], "QihongwangView", 0);
为该类添加一个名为repeat
的方法
class_addMethod(newClass, @selector(repeat), (IMP)repeatFuntion,"v@:");
注册该方法
objc_registerClassPair(newClass);
创建该类的实例对象
id instanceOfNewClass = [[newClass alloc]init];
调用repeat
方法
[instanceOfNewClass performSelector:@selector(repeat) withObject:nil];
替换类方法的定义
,当类中没有没有想替换的原始方法,该方法会调用
class_addMethod(<#Class cls#>, <#SEL name#>,
<#IMP imp#>, <#const char *types#>)
来为该类增加一个新方法
class_replaceProperty(<#Class cls#>,
<#const char *name#>, <#const objc_property_attribute_t *attributes#>,
<#unsigned int attributeCount#>)
交换俩个方法的实现,内部实现其实是调用了俩次
method_setImplementation(<#Method m#>, <#IMP imp#>);
method_exchangeImplementations(<#Method m1#>, <#Method m2#>);
设置一个方法的实现
method_setImplementation(<#Method m#>, <#IMP imp#>);