iOS 重定向的使用

在iOS开发写页面时,有时因为写得急,误将[self.view addSubview:view]写成self, 或因创建控件的方法抽取了所以传参的时候误写成self,然后在运行看效果的时候就会报错“unrecognized selector sent to instance 0x7f8a257535b0

报错的原因是传的“self"未找到方法的实现,这个很明确知道是UIView的实例方法。所以可以运用重定向的方式,将方法转交给self.view去实现。具体代码如下,可在项目的baseviewcontroller里面写实现

// 重定向技术:解决项目中有时使用在controller添加subview时传入的是控制器的问题
+ (BOOL)resolveInstanceMethod:(SEL)sel
{  
  SEL mothod = @selector(addSubview:);  
  if (mothod == sel) {// 添加子view    
    return YES;  
  }    
 return [super resolveInstanceMethod:sel];
}
 - (id)forwardingTargetForSelector:(SEL)aSelector
{
    if (aSelector == @selector(addSubview:)) {    
     return self.view;  
   }    
 return [super forwardingTargetForSelector:aSelector];
 }

完毕,谢谢!

你可能感兴趣的:(iOS 重定向的使用)