我的技术博客经常被流氓网站恶意爬取转载。请移步原文:http://www.cnblogs.com/hamhog/p/3801030.html,享受整齐的排版、有效的链接、正确的代码缩进、更好的阅读体验。

在Objective-C中需要以函数名或者函数指针来调用函数时,以回调函数为例,对象为(id)target,它的成员函数名为callback,之前习惯是这么写的:

if ([target respondsToSelector:callback]){
[target performSelector:callback withObject:nil];
}

但是在ARC下会报一个warning: PerformSelector may cause a leak because its selector is unknown

在网上查,很多人说的方法都是定义宏去ignore warning之类的。总感觉很不爽。今天查到了正确的解决方法:

【解决方法】

if ([target respondsToSelector:callback]){
// [target performSelector:callback withObject:nil];
IMP imp = [target methodForSelector:callback];
void (*func)(id, SEL) = (void *)imp;
func(target, callback);
}

这样就不会报warning了。

【原因】

详细解释可见爆栈上这个被采纳的答案

暂时没时间翻译了,就先贴个链接在这儿吧~

最新文章

  1. GPRS GPRS(General Packet Radio Service)是通用分组无线服务技术的简称,它是GSM移动电话用户可用的一种移动数据业务,属于第二代移动通信中的数据传输技术
  2. ubuntu -LDAP的配置
  3. Hadoop RPC源码阅读-客户端
  4. Fedora 21 安装VirtualBox
  5. 配置WampServer以及搭建WordPress的一些问题,持续总结。
  6. 如何通过织云 Lite 愉快地玩转 TSW
  7. 基于Nginx进行地图瓦片缓存的方案描述
  8. 虚拟机下Ubuntu扩容及磁盘重新分区-Gparted
  9. 如果测试UI
  10. jquery hover事件只触发一次动画
  11. 2019-03-15-day011-递归生成器
  12. Java多线程1:进程和线程的区别
  13. JavaScript三种方式改变标签css
  14. Ansible 从MySQL数据库添加或删除用户
  15. java学习-GET方式抓取网页(UrlConnection和HttpClient)
  16. jQuery+zTree
  17. js权威指南学习笔记(二)表达式与运算符
  18. (疯狂java)第一课
  19. JS给TR隔行换色,鼠标经过有动感
  20. HttpClient发送Json数据到指定接口

热门文章

  1. Python Generators(生成器)--yield
  2. mysql导入数据库
  3. php运行步骤解析
  4. [Qt5] 减少dll依赖和大小(特别是webkit的大小和依赖)
  5. ASP.NET 之 检测到在集成的托管管道模式下不适用的ASP.NET设置
  6. Linux vsftpd 无法登录 cannot change directory:xxx priv_sock_get_cmd 问题
  7. 基本Linux命令总结
  8. ES各种错误解决
  9. [改善Java代码]小心switch带来的空值异常
  10. 关于JDK中的设计模式