针对Xcode的警告忽略消除处理
一、问题描述
html代码如下
<html>
<head>
<meta charset="utf-8"/>
<title>我的网页</title>
<script type="text/javascript">
function JS2OC()
{
window.location.href="fzw://send";
}
</script>
</head>
<body>
<input value="js调用oc" type="button" onclick='JS2OC();'></input>
</body>
</html>
显示效果如下

oc代码如下
/**
* 跳转判断
*/
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSString *urlString = request.URL.absoluteString;
NSLog(@"urlString:%@",urlString);
NSString *preString = @"fzw://";
if([urlString hasPrefix:preString])
{
NSString *methodString = [urlString substringFromIndex:preString.length];
NSLog(@"methodString:%@",methodString);
[self performSelector:NSSelectorFromString(methodString)];
return NO;
}
return YES;
} -(void)send
{
NSLog(@"%s",__func__);
}
点击demo.html的按钮“js调用oc”,网页跳转到fzw://send。UIWebView的代理方法- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType拦截页面并获取网页链接fzw://send,经过处理,最后调用oc指定方法-(void)send,并返回NO取消跳转,从而达到js调用oc方法。

但xcode提示警告: PerformSelector may cause a leak because its selector is unknown

二、问题分析
编译器的警告对开发者来说是很有用的信息,但有时由于编译器的智商实在太低,会提示一些无谓的警告。当有些警告不想看到时,可以用如下代码消除警告。
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-W警告名称"
需要关闭警告的代码
#pragma clang diagnostic pop
三、问题解决
该警告的名称为-Warc-performSelector-leaks

/**
* 跳转判断
*/
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSString *urlString = request.URL.absoluteString;
NSLog(@"urlString:%@",urlString);
NSString *preString = @"fzw://";
if([urlString hasPrefix:preString])
{
NSString *methodString = [urlString substringFromIndex:preString.length];
NSLog(@"methodString:%@",methodString);
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
[self performSelector:NSSelectorFromString(methodString)];
#pragma clang diagnostic pop
return NO;
}
return YES;
} -(void)send
{
NSLog(@"%s",__func__);
}
针对Xcode的警告忽略消除处理的更多相关文章
- Xcode警告忽略
Xcode中 cmd+B 之后总会出现各种各样的警告,对于一个对代码有洁癖的人,这种情况很难忍,接下来我们用些特殊手段强制消除这些警告 一.忽略源文件中的警告 使用编译器宏来操作 #pragma c ...
- 去掉xcode中警告的一些经验
1.编译时,编译警告忽略掉某些文件 只需在在文件的Compiler Flags 中加入 -w 参数,例如: 2.编译时,编译警告忽略掉某段代码 #pragma clang diagnostic pus ...
- Xcode常见警告和错误
Xcode 升级后,常常遇到的遇到的警告.错误,解决方法 从sdk3.2.5升级到sdk 7.1中间废弃了很多的方法,还有一些逻辑关系更加严谨了.1,警告:“xoxoxoxo” is depreca ...
- Xcode编译警告Assigning to 'id<XXXDelegat> ——Nullable' from incompatible type 'XXXView *const_strong'
编译报警告 可能是 自定义分类使用协议时出现与父类协议的冲突 解决方法如下:
- Matlab警告消息消除
在运行matlab程序时候,有些matlab子函数在高版本将会被舍弃,在使用的时候,matlab编译器就会报出警告信息. The COMBNTNS function will be removed i ...
- Xcode关闭警告
对于关闭某个警告,如果需要全局关闭的话,直接在Other C Flags里写 -Wno-...就行了,比如 -Wextra -Wno-sign-compare 就是一个常见的组合.如果相对某几个文件开 ...
- iOS XCode工程 警告处理
今天 老板说,群~你的警告⚠️蛮多的...我拍了胸脯,下周项目总结时候一定会完美解决!!! 于是我得把项目中全部警告解决了,加油
- 针对Xcode 9 + iOS11 的修改,及iPhone X的适配
1,UIScrollView的automaticallyAdjustsScrollViewInsets 失效了. automaticallyAdjustsScrollViewInsets,当设置为YE ...
- xcode忽略警告
1.对整个文件使用 你的工程 -> 你的target -> Build Phases -> Compile Sources -> 搜索要忽略警告的文件名,在 Compiler ...
随机推荐
- 为什么构造器不能是abstract, static, final, native or synchronized的?
Unlike methods, a constructor cannot be abstract, static, final, native or synchronized. 1. A const ...
- Tomcat 6 --- 你很少使用的安全管理SecurityManager
试想一下,如果你的JSP页面中包含一句代码“System.exit(1);”,你的web应用访问到该JSP时,会发生什么? 一般使用tomcat可能都没有注意到这个问题,本篇主要讲述tomcat 6中 ...
- Mysql CPU占用90%
今天网站打开卡,查了下发现Mysql CPU占用到90%! 1.通过putty工具连接mysql putty工具十分的强大,它可以让我们直接访问MySQL.当然,要实现这一步肯定要做点什么.MySQL ...
- 【Bootstrap】Bootstrap和Java分页-第二篇
目录 关于此文 配置xml-pager.tld 分页控件-Pager 分页action集成类-BaseController 实例-Dao 实例-service 实例-action 实例-JSP 实例- ...
- 必须知道的.net(字段、属性和方法)
1.字段 通常定义为private(封装原则) 2.属性(property) 通常定义为public,表示类的对外成员.具有可读可写属性,通过get和set访问器实现 3.索引器(indexer) C ...
- eclipse svn快捷键
一.打开eclipse插件安装市场,搜索svn,选择Subclipse安装 二.设置 svn ,设置快捷键, 1.windows-preference,在打开对话框输入keys过滤出keys选择 2. ...
- java系列-安装MySql(三)
第一大步:MySQL安装文件分为两种,一种是msi格式的,一种是zip格式的.如果是msi格式的可以直接点击安装,按照它给出的安装提示进行安装(相信大家的英文可以看懂英文提示),一般MySQL将会安装 ...
- 如何编写可维护的面向对象JavaScript代码
能够写出可维护的面向对象JavaScript代 码不仅可以节约金钱,还能让你很受欢迎.不信?有可能你自己或者其他什么人有一天会回来重用你的代码.如果能尽量让这个经历不那么痛苦,就可以节省不少时 间.地 ...
- 网络编程2-UDP编程(DatagramSocket)
1.传输层有两个协议,一个是tcp协议,另一个是udp协议,tcp协议通过socket编程.udp通过数据报编程. UDP协议: (1)将数据.源地址.目的地址 封装成数据包,不需要建立链接 (2)每 ...
- C#GDI+图像处理
支持格式:BMP.GIF.JPEG.EXIF.PNG.TIFF.ICON.WMF.EMF等,几乎涵盖所有常用格式 图像类: Image类:Bitmap和Metafile的类提供功能的抽象基类. Met ...