Runtime-动态创建对象以及其他使用方法

创建一个名为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#>);

你可能感兴趣的:(Runtime-动态创建对象以及其他使用方法)