zoukankan      html  css  js  c++  java
  • 针对Xcode的警告忽略消除处理

    一、问题描述

    html代码如下

     1 <html>
     2     <head>
     3         <meta charset="utf-8"/>
     4         <title>我的网页</title>
     5         <script type="text/javascript">
     6             function JS2OC()
     7             {
     8                 window.location.href="fzw://send";
     9             }
    10         </script>
    11     </head>
    12     <body>
    13         <input value="js调用oc" type="button" onclick='JS2OC();'></input>
    14     </body>
    15 </html>

    显示效果如下

     oc代码如下

     1 /**
     2  *  跳转判断
     3  */
     4 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
     5 {
     6     NSString *urlString = request.URL.absoluteString;
     7     NSLog(@"urlString:%@",urlString);
     8     NSString *preString = @"fzw://";
     9     if([urlString hasPrefix:preString])
    10     {
    11         NSString *methodString = [urlString substringFromIndex:preString.length];
    12         NSLog(@"methodString:%@",methodString);
    13         [self performSelector:NSSelectorFromString(methodString)];
    14         return NO;
    15     }
    16     return YES;
    17 }
    18 
    19 -(void)send
    20 {
    21     NSLog(@"%s",__func__);
    22 }

    点击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

     1 /**
     2  *  跳转判断
     3  */
     4 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
     5 {
     6     NSString *urlString = request.URL.absoluteString;
     7     NSLog(@"urlString:%@",urlString);
     8     NSString *preString = @"fzw://";
     9     if([urlString hasPrefix:preString])
    10     {
    11         NSString *methodString = [urlString substringFromIndex:preString.length];
    12         NSLog(@"methodString:%@",methodString);
    13 #pragma clang diagnostic push
    14 #pragma clang diagnostic ignored "-Warc-performSelector-leaks"
    15         [self performSelector:NSSelectorFromString(methodString)];
    16 #pragma clang diagnostic pop
    17         return NO;
    18     }
    19     return YES;
    20 }
    21 
    22 -(void)send
    23 {
    24     NSLog(@"%s",__func__);
    25 }
    学习,以记之。如有错漏,欢迎指正

    作者:冯子武
    出处:http://www.cnblogs.com/Zev_Fung/
    本文版权归作者和博客园所有,欢迎转载,转载请标明出处。
    如果博文对您有所收获,请点击下方的 [推荐],谢谢

  • 相关阅读:
    webpack 学习
    文件操作
    关于列表remove的操作和字符串split的操作新领悟
    深浅拷贝和基础类型补充
    小数据池和编码
    字典和集合
    列表和元组
    字符串理论
    递归遍历多层列表
    基本数据类型和操作
  • 原文地址:https://www.cnblogs.com/Zev_Fung/p/5608020.html
Copyright © 2011-2022 走看看