po [self.delegate respondsToSelector:@selector(xxx)] nil

原创 2018年04月16日 17:48:05

po [self.delegate respondsToSelector:@selector(xxx)] nil

一直没有发现的一个问题,今天在调试代码的时候发现,代理指针是有的,但是就是不执行代理方法。

检查来,检查去发现没有什么地方不对劲啊,但是奇怪的是有些代理方法可以正常回调,有些代理方法不被self.delegate响应,这是什么原因呢?

对比了以下可以响应和不能响应的方法发现,原来不执行代理方法回调,或者说po [self.delegate respondsToSelector:@selector(xxx)]的时候是nil,是因为xxx方法在签协议的类里没被实现。

一直以来,认为只要有代理指针,签了协议,self.delegate就会响应代理方法,即以下一定是会被执行。

[self.delegate respondsToSelector:@selector(xxx)]

今天才发现错了,也是挺nc的。对比输出看下结果

(lldb) po [self.delegate respondsToSelector:@selector(xxxx:xxxx)]
 nil
(lldb) po [self.delegate respondsToSelector:@selector(xxxx:xxxx)]
0x0000000000000001

想想也是理所当然的,如果签协议的类没有实现代理类的代理方法,po [self.delegate respondsToSelector:@selector(xxx)]为nil,或者说是不响应该方法,不就本来应该这样吗。想想也是很nc呢。

《Selenium自动化实践之单元测试框架+PO模式》

全网第1份基于python3.x与selenium结合的自动化实践课程; 本课程应用UnitTest单元测试框架+实例进行讲解; PageObject模式在实际测试过程中的应用。
  • 2018年01月22日 10:54

respondsToSelector的作用

1、respondsToSelector 用来判断某一个方法时候实现(下面的代码意思:如果baseAPIdidStartRequest这个方法实现了,那么就去调用,防止出现异常) if ([...
  • paulery2012
  • paulery2012
  • 2014-04-18 14:30:52
  • 3677

IOS Crash : if (delegate && [delegate respondsToSelector:didStartSelector])

问题:使用ASIFormDataRequest框架,发送请求后,收到网络返回的数据,json解析后,返回上一页面。出现crash,如下图: 原因: 页面跳转使ASIHttpRequest...
  • Wengyuyu1234
  • Wengyuyu1234
  • 2017-06-16 15:42:11
  • 485

self.delegate = self?

本文来自简书原文地址:http://www.jianshu.com/p/c92800c5a658 前言 在 Objective-C 项目中,不少开发者们可能会写或者曾看到过这样的代码: ...
  • qq_30513483
  • qq_30513483
  • 2017-07-04 23:29:41
  • 809

objdelegate respondsToSelector 方法的用法

-(BOOL) isKindOfClass: classObj 用来判断是否是某个类或其子类的实例 -(BOOL) isMemberOfClass: classObj 用来判断是否是某个类的实例 ...
  • chenruizhi
  • chenruizhi
  • 2014-06-20 16:07:02
  • 296

oc 中协议 protocol 的使用

1、把相同的属性和方法抽取出来:一、构建父类;二、构建协议; 2、类的属性和方法都是和这个类关联的;协议的属性和方法不和任何类进行关联,是独立的; 3、协议包含方法(类方法、对象方法)和属性;正是...
  • zhhelnice
  • zhhelnice
  • 2018-03-02 11:10:06
  • 55

iOS 彻底学会使用delegate

委托delegation的介绍:         委托delegation是一种简单但是功能强大的设计模式,它的功能是程序中一个对象代表另一个对象,或者一个对象与另外一个对象协同工作。委托对象...
  • dqjyong
  • dqjyong
  • 2012-06-23 12:28:32
  • 41256

No know instance method for selector 'respondsToSelector:'

错误提示:No know instance method for selector'respondsToSelector:'之前写代理的时候,都没有去调用respondsToSelector:去检查我...
  • chenysh521
  • chenysh521
  • 2016-03-17 11:25:28
  • 1110

CocoaAsyncSocket (二)

参考了一篇机器人控制的文章,总结一下:【iOS与EV3混合机器人编程系列之四】iOS_WiFi_EV3_Library 剖析之一:WiFi UDP和TCP 其中 1)拥有一个连接界面来搜索并连接W...
  • github_35041937
  • github_35041937
  • 2016-09-26 20:01:42
  • 348

iOS不同模式返回根视图的方法

pop回根视图[self.navigationController popToViewController: [self.navigationController.viewControllers ob...
  • Haitao0692
  • Haitao0692
  • 2016-05-04 11:27:09
  • 336
收藏助手
不良信息举报
您举报文章:po [self.delegate respondsToSelector:@selector(xxx)] nil
举报原因:
原因补充:

(最多只允许输入30个字)