iOS开发 - runtime运行时一些实用方法

一、从别的类拷贝方法get

//说明:StyleKit是类名 该方法寻找类中包含draw的方法string

- (void)searchMethodsit

{io

    self.methodsArray = [@[] mutableCopy];table

    int unsigned numMethods;class

    Method *methods = class_copyMethodList(objc_getMetaClass("StyleKit"), &numMethods);List

    for (int i = 0; i < numMethods; i++) {方法

        NSString *stringFromSelector = NSStringFromSelector(method_getName(methods[i]));im

        if ([stringFromSelector rangeOfString:@"draw"].location != NSNotFound) {tab

            [self.methodsArray addObject:stringFromSelector];

        }

    }

    free(methods);

}

 

//说明:self.imageList 整数取0便可 将StyleKit类中搜出来的方法,经过IMP调用执行

- (void)drawRect:(CGRect)rect

{

    if (self.imageList < self.methodsArray.count) {

        SEL paintCodeSelector = NSSelectorFromString(self.methodsArray[self.imageList]);

        [StyleKit setDesiredFillColor:self.fillColor];

        IMP imp = [[StyleKit class] methodForSelector:paintCodeSelector];

        void (*func)(id, SEL) = (void *)imp;

        func([StyleKit class], paintCodeSelector);

    }

}

相关文章
相关标签/搜索