1.问题

项目中使用到了从字符串创建选择器,编译时发现警告:“performSelector may cause a leak because its selector is unknown”(因为performSelector的选择器未知可能会引起泄漏)

2.原因

在ARC模式下,运行时需要知道如何处理你正在调用的方法的返回值。这个返回值可以是任意值,如 void , int , char , NSString , id 等等。ARC通过头文件的函数定义来得到这些信息。所以平时我们用到的静态选择器就不会出现这个警告。因为在编译期间,这些信息都已经确定。

[someController performSelector:@selector(someMethod)];...- (void)someMethod{}

而使用 [someController performSelector: NSSelectorFromString(@“someMethod”)]; 时ARC并不知道该方法的返回值是什么,以及该如何处理?该忽略?还是标记为 ns_returns_retained 还是 ns_returns_autoreleased ?

3.解决办法

原来:

 [module performSelector:NSSelectorFromString(@"someMethod"withObject:applicationwithObject:launchOptions];

更改后

 IMP imp = [module methodForSelector:NSSelectorFromString(@"someMethod"];void (*func)(id, SEL,UIApplication *,NSDictionary *) = (void *)imp;func(module,sel,application,launchOptions);

iOS之performSelector may cause a leak because its selector is unknown警告原因及其解决办法相关推荐

  1. [iOS][Question]performselector may cause a leak because its selector is unknown

    当使用 performSelector:时会出现上面的警告.比较烦人啊.你可以使用下面的方法去除 #pragma clang diagnostic ignored "-Warc-perfor ...

  2. performSelector may cause a leak because its selector is unknown

    转自:http://www.jianshu.com/p/6517ab655be7 问题 我在 ARC 模式下编译出了这个 warning: "performSelector may caus ...

  3. 【iOS工具】注释插件 VVDocumenter-Xcode 的安装使用及误点击“Skip Bundle”的解决办法!...

    一.前言 VVDocumenter-Xcode 注释插件是由 @onevcat 大神开发的一个Xcode注释插件,其作用是在Xcode中输入 "///" 后自动生成规范的文档注释, ...

  4. iOS开发者遇到审核失败的原因及解决办法

    App中设计的图标与Apple原生图标类似,Apple原生图标有专利保护,并且在Design Guideline里面规定,App的图标不能与Apple图标雷同,如iTunes,App Store, i ...

  5. 微信小程序播放语音|audio播放mp3|audio播放音频在IOS|苹果手机上外放没声音,戴上耳机就有声音【解决办法记录】

    以前项目中遇到的问题,今天同事问到了,在这里记录一下 语音播放使用的 wx.createInnerAudioContext() 诡异问题记录: 在安卓上都没问题,语音发送接收之后播放都没问题,就是在 ...

  6. 苹果手机(IOS)下载不上安装不上charles证书(不弹出下载框)终极解决办法

    基本上能找到这里的,肯定都试过很多方法了 下载官网证书的办法也试过,将charles的证书文件下载到苹果手机也试过,但是还是不可以安装证书, 官网安装的证书不匹配. 下面给出终极解决办法: 利用fid ...

  7. ios safari 开启无痕浏览(隐私模式)报QuotaExceededError: DOM Exception 22异常解决办法...

    // 检测safari是否开启无痕浏览 (function () {var testKey = 'test'var storage = window.sessionStoragetry {storag ...

  8. iOS开发 苹果开发者企业账号续费,提示你的支付授权失败解决办法

    最近续费公司帐号都没有问题,续费企业帐号时提示"你的支付授权失败.请核对你的信息并重试,或尝试其他支付方式",目前已经续费成功,提供一些方法. 网上提供的方法(他们说可行,但是不是 ...

  9. iOS 九宫格输入不了问题出现原因及解决办法

    原因:中文九宫格输入值为特殊字符 @"➋➌➍➎➏➐➑➒" 所以在做输入校验的时候需要增加以上特殊字符的校验 实现: - (BOOL)textView:(UITextView *)t ...

最新文章

  1. Java的新项目学成在线笔记-day12(九)
  2. Java NIO学习系列二:Channel
  3. 使用缓冲流有什么好处_使用PVC石笼网有什么好处?
  4. 中国版“Twilio”何在?
  5. 那些年搞不懂的多线程、同步异步及阻塞和非阻塞(二)---概念区分
  6. 动态规划初步--数字三角形
  7. php列表框怎么用,PHP+Mysql+jQuery查询和列表框选择操作实例讲解
  8. Hibernate二级缓存配置
  9. java dump分析工具_Java 性能分析工具 (2):Java 内置监控工具
  10. Retroifit原理
  11. YurunOAuthLogin v2.0.2,第三方 OAuth2 授权一把梭
  12. mysql 加随机数,如何插入随机数MySql
  13. MySQL高级-MySQL并发参数调整
  14. govendor用法
  15. sql Server 2008 数据库自动备份维护计划
  16. iOS Segue使用
  17. 复旦大学数学学院转入大数据学院的14级同学对高等代数课程的评价
  18. 象棋( Xiangqi, ACM/ICPC Fuzhou 2011, UVa1589)
  19. 在Android面试前背八股和学面试技巧真的有用吗?
  20. MaxEnt分析流程和推荐的分析内容

热门文章

  1. WPS如何间隔插入空白行
  2. python加密解密开源库_RSA加密解密(python版)
  3. Cocos Creator 中制作一个倒计时显示
  4. 条码/RFID标签打印方案
  5. Oracle数据库入门到高薪培训教程(从Oracle 11g 到 Oracle 19c)
  6. oracle数据库12cocp培训教程,ORACLE OCP认证 12C课程大纲
  7. 新手摆摊进来看看(明确卖什么很关键)
  8. 黑客爱用的 HOOK 技术大揭秘!
  9. Linux内核睡眠唤醒调试
  10. C#实现udp点对点通信的完整示例