美文网首页iOS-进阶学习
iOS 08、代理控制器 respondsToSelector

iOS 08、代理控制器 respondsToSelector

作者: echo海猫 | 来源:发表于2018-06-13 11:15 被阅读1次

具体问题介绍:
在一个控制器里面设置一个代理,push到子控制器中,子控制器同样设置了相同的代理方法,导致pop回来过后,代理中的respondsToSelector找不到相应的代理方法,此问题是接收不到代理的回调方法导致的
[****ViewController respondsToSelector:]: message sent to deallocated instance
参考博客,自己动手解决了,博客地址:
http://blog.sina.com.cn/s/blog_6707d8b301013e15.html
博客的原因解析:
某个公共类或系统提供的控件,存在delegate方法,当创建此公共控件的容器类已经销毁,
而这个控件对应的服务是在其它run loop中进行的,控件销毁或者需要进行状态通知时,依然按照
delegate的指针去通知,则会出现这个问题。

主要解决方式:

//在viewDidAppear或者viewWillAppear中设置本控制器成为代理
-(void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
   _tool = [[Tool alloc]initWithDelegate:self];
}
//push到子控制器中,移除
-(void)viewWillDisappear:(BOOL)animated{
    [super viewWillDisappear:animated];
        
    _tool = [[Tool alloc]initWithDelegate:nil];
}

相同的处理方式在子控制器中:

//在viewDidAppear或者viewWillAppear中设置本控制器成为代理
-(void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
   _tool = [[Tool alloc]initWithDelegate:self];
}
//pop回到父控制器中,移除
-(void)viewWillDisappear:(BOOL)animated{
    [super viewWillDisappear:animated];
        
    _tool = [[Tool alloc]initWithDelegate:nil];
}

相关文章

  • iOS 08、代理控制器 respondsToSelector

    具体问题介绍:在一个控制器里面设置一个代理,push到子控制器中,子控制器同样设置了相同的代理方法,导致pop回来...

  • iOS与H5交互

    前提:在iOS控制器中加载UIWebView,设置代理,遵守UIWebViewDelegate协议。 一、iOS调...

  • iOS与H5交互

    前提:在iOS控制器中加载UIWebView,设置代理,遵守UIWebViewDelegate协议。 一、iOS调...

  • iOS与H5交互

    前提:在iOS控制器中加载UIWebView,设置代理,遵守UIWebViewDelegate协议。 一、iOS调...

  • [SYKeyWordShowView respondsToSel

    iOS关于[SYKeyWordShowView respondsToSelector:]: message sen...

  • iOS 和 h5 交互

    <一>iOS与H5交互 在iOS控制器中加载UIWebView,设置代理,遵守UIWebViewDelegate协...

  • 访问通讯录

    iOS 9.0 之前获取通讯录 AddressBookUI 的使用创建选择联系人控制器设置代理实现代理方法(在代理...

  • H5与iOS的交互

    H5和iOS的交互 前提 在iOS控制器中加载UIWebView,设置代理,遵守UIWebViewDelegate...

  • 避免因为respondsToSelector:, perform

    避免因为respondsToSelector:, performSelector:上线被拒 记得前段时间iOS开发...

  • iOS respondsToSelector方法

    如果一个对象收到一个消息调用一个它未定义的方法那么会引起一个错误。这和调用一个不存在的方法有些相似。但是由于发送消...

网友评论

    本文标题:iOS 08、代理控制器 respondsToSelector

    本文链接:https://www.haomeiwen.com/subject/htqjeftx.html