1、编译时,编译警告忽略掉某些文件

只需在在文件的Compiler Flags 中加入 -w 参数,例如:

2、编译时,编译警告忽略掉某段代码


#pragma clang diagnostic push

#pragma clang diagnostic ignored "-Wmultichar"

char b = 'df'; // no warning.

#pragma clang diagnostic pop

参考网址:http://stackoverflow.com/questions/7897429/ignore-all-warnings-in-a-specific-file-using-llvm-clang/8087544#8087544

3、编译时,analyse警告忽略掉某些文件

只需在文件的Compiler Flags 中加入 -Xanalyzer -analyzer-disable-checker 参数,例如:

参考网址:http://stackoverflow.com/questions/7897429/ignore-all-warnings-in-a-specific-file-using-llvm-clang

4、编译时,analyse警告忽略掉某段代码

#ifndef __clang_analyzer__

// Code not to be analyzed

#endif

参考网址:http://stackoverflow.com/questions/5806101/is-it-possible-to-suppress-xcode-4-static-analyzer-warnings

5、项目使用arc以后,调用[someTarget performSelector:someAction]会报警告,有如下三种解决方法:

a、当ARC检查警告时,忽略掉该段代码


#pragma clang diagnostic push

#pragma clang diagnostic ignored "-Warc-performSelector-leaks"

[object performSelector:action];

#pragma clang diagnostic pop

对于多处出现该警告时,可以定义一个宏来替换,比如

#define NoWarningPerformSelector(target, action, object) \

_Pragma("clang diagnostic push") \

_Pragma("clang diagnostic ignored \"-Warc-performSelector-leaks\"") \

[target performSelector:action withObject:object]; \

_Pragma("clang diagnostic pop") \

b、使用objc_msgSend函数进行替换

#import <objc/message.h>

objc_msgSend(object, action);

c、在该代码文件的的Compiler Flags 中加入-Wno-arc-performSelector-leaks 参数

参考网址:http://stackoverflow.com/questions/7017281/performselector-may-cause-a-leak-because-its-selector-is-unknown/7073761#7073761

6、对于category覆盖类里面方法导致的警告,可能就要修改源代码了。因为苹果是不建议在category中覆盖类方法的,以为这种行为会产生未知的结果。

If the name of a method declared in a category is the same as a method in the original class, or a method in another category on the same class (or even a superclass), the behavior
is undefined as to which method implementation is used at runtime.

参考网址:http://stackoverflow.com/questions/13388440/xcode-4-5-warns-about-method-name-conflicts-between-categories-for-parent-child

https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/CustomizingExistingClasses/CustomizingExistingClasses.html  (Avoid Category Method Name Clashes段落)

7、对于某个类中存在方法名和系统某个类的方法名相同的情形,如果你在此类的静态方法中使用self来调用该方法,可能引发警告,所以尽量避免此种情况。比如

我自定义一个类 RequestTask 继承自NSObject,里面有个静态方法:

+ (id)taskWithRequest:(BaseRequest *)request delegate:(id)delegate

{

return [[self alloc] initWithRequest:request delegate:delegate];

}

而在我的RequestTask确实有一个方法的定义为:

- (id)initWithRequest:(BaseRequest *)req delegate:(id)delegate;

理论上讲这个是没有任何问题的,但是编译器编译的时候却有一个警告,因为NSURLConnection有一个相同的方法,编译器认为我调用的是NSURLConnection类的该方法,参数类型不对报错。

所以此种情况,我们应该避免直接在静态方法中使用self调用类的实例方法。

8、当使用两个不匹配的enum类型或者enum类型默认也是会报警告的,此种情况可以通过直接强制类型转换解决,也可以在编译器中规避掉此种警告。例如:

9、当Enum类型和Enum类型中未定义的整形范围进行比较时,编译器也会给警告。此种解决方法目前查到的就是强制类型转化(如果有其他方式,请看到的ggjj告诉我一下,再此谢过了)

去掉xcode中警告的一些经验的更多相关文章

  1. 在Xcode中如何屏蔽某个源文件的编译警告信息

    某些时候如果我们的源码在编译过程中出现大量的编译警告时,看起来是挺不爽的:但又确实没办法解决警告问题的时候,我们可以使用下面的方法来屏蔽指定的某个文件的所有警告信息. 1.在Xcode中选中工程文件. ...

  2. Xcode中Objc动态调用方法同时避免警告的几个办法

    我们在Xcode中使用objc写代码的时候往往会碰到动态调用方法的时候. 如果是静态调用这很常见,不会有任何问题: [self performSelector:@selector(method)]; ...

  3. 在Xcode中使用Git进行源码版本控制

    http://www.cocoachina.com/ios/20140524/8536.html 资讯 论坛 代码 工具 招聘 CVP 外快 博客new 登录| 注册   iOS开发 Swift Ap ...

  4. 解决cocos2dx在Xcode中运行时报:convert: iCCP: known incorrect sRGB profile 的问题

    解决cocos2dx在Xcode中运行时报:convert: iCCP: known incorrect sRGB profile 的问题 本文的实践来源是参照了两个帖子完成的: http://dis ...

  5. 去掉Xcode源码末尾的空格

    去掉Xcode源码末尾的空格 在用 Xcode 开发的时候,很容易就在行末增加一些空格了.这些空格在上传到 review board 上后 , 就会被特别的颜色显示出来.因为一种好的编程风格是说 , ...

  6. 网络粘贴---Xcode中可用到的快捷键

    快捷键: 1.StoryBoard技巧 当你想直接在view中选择自己想要的元素时,但是又碍于一个view上叠加的元素太多很难直接选中,那么在这时,你同时按住键盘上的shift和 control键,然 ...

  7. Cocos开发中性能优化工具介绍之Xcode中Instruments工具使用

    Instruments是动态分析工具,它与Xcode集成在一起,可以在Xcode中通过菜单Product→Profile启动.启动如图所示,Instruments有很多跟踪模板可以动态分析和跟踪内存. ...

  8. (转)Xcode 中设置部分文件ARC支持

    ARC是什么 ARC是iOS 5推出的新功能,全称叫 ARC(Automatic Reference Counting).简单地说,就是代码中自动加入了retain/release,原先需要手动添加的 ...

  9. 【转】jsoncpp在xcode中的使用

    http://blog.csdn.net/ashqal/article/details/8573392 考虑到cocos2dx需要使用jsoncpp做关卡的设置, 尝试用源代码直接放到项目以方便后期生 ...

随机推荐

  1. fastdfs集群安装过程_学习笔记

    最终效果 初始化为6个节点 在/usr/local/software 目录下上传需要用到tar包,分别在各个节点上传 使用scp 将本地software目录复制到其他节点上 73.74为 tracke ...

  2. linux中安装gitlab和cicd(断网版)

    1:先介绍一下怎么查找所需要的依赖包 #yum install rpmname--downloadonly --downloaddir=/rpmpath 例如:yum install gitlab-r ...

  3. yield,sleep,wait

    转自:http://dylanxu.iteye.com/blog/1322066 1.sleep() 使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁.也 ...

  4. Java 类在 Tomcat 中是如何加载的?

    作者 :xingoo https://www.cnblogs.com/xing901022/p/4574961.html 说到本篇的Tomcat类加载机制,不得不说翻译学习Tomcat的初衷. 之前实 ...

  5. JDK11 | 第五篇 : 启动单个Java源代码文件的程序

    文章首发于公众号<程序员果果> 地址 : https://mp.weixin.qq.com/s/h1L4FmzVSix434gVt8Fc7w 一.简介 JEP330-启动单文件代码程序(L ...

  6. 移动端1像素解决方法,根据媒体查询transform缩放

    .borderOnePx{ position: relative; } .borderOnePx::after { content: ''; height:1px; background:#000; ...

  7. day16 django 笔记

    一 jQuery是什么? [1]   jQuery由美国人John Resig创建,至今已吸引了来自世界各地的众多 javascript高手加入其team. [2]   jQuery是继prototy ...

  8. vue观察模式浅析

    以下是我对vue观察者模式的理解:github L6zt 加入tip 2018-10-14 最近又看到<js设计模式设计>书 推荐去搂搂不要对框架的偏见, 你真的了解jquery.angu ...

  9. UI标签库专题十:JEECG智能开发平台 Form(form标签)

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/zhangdaiscott/article/details/30099121  1. Form(f ...

  10. Kafka DockerFile

    FROM php:5.6.38-fpm COPY . /alidata/workerspace WORKDIR /alidata/workerspace RUN set -x && a ...