iOS开发 - runtime运行时一些实用方法
2016-03-21 15:48
567 查看
1、从别的类拷贝方法
//说明:StyleKit是类名 该方法寻找类中包含draw的方法
- (void)searchMethods
{
self.methodsArray = [@[] mutableCopy];
int unsigned numMethods;
Method *methods = class_copyMethodList(objc_getMetaClass("StyleKit"), &numMethods);
for (int i = 0; i < numMethods; i++) {
NSString *stringFromSelector = NSStringFromSelector(method_getName(methods[i]));
if ([stringFromSelector rangeOfString:@"draw"].location != NSNotFound) {
[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);
}
}
//说明:StyleKit是类名 该方法寻找类中包含draw的方法
- (void)searchMethods
{
self.methodsArray = [@[] mutableCopy];
int unsigned numMethods;
Method *methods = class_copyMethodList(objc_getMetaClass("StyleKit"), &numMethods);
for (int i = 0; i < numMethods; i++) {
NSString *stringFromSelector = NSStringFromSelector(method_getName(methods[i]));
if ([stringFromSelector rangeOfString:@"draw"].location != NSNotFound) {
[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);
}
}
相关文章推荐
- iOS添加蒙层(遮盖层),遮盖层上放控件
- 获取DeviceToken值,iOS推送
- iOS知识 exclusiveTouch
- iOS经典资料收集
- KVO的概述与使用
- iOS的socket开发基础
- iOS开发调试
- iOS 禁止横屏
- iOS证书失效
- 超全!整理常用的iOS第三方资源
- IOS开发之Quartz2D绘图的使用
- iOS离线缓存
- ios .a静态库和framework静态库的创建以及使用
- 三言两语frame&bounds
- iOS WebView调用JS的一个小坑
- 搜索图标居中的搜索框~iOS风格搜索框
- iOS自定义加载等待视图-MBProgressHUD
- iOS 之 GCD(1)
- iOS7新特性 edgesForExtendedLayout
- iOS 学习资料整理