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. 44 答疑(三)--join的写法/Simple nested loop join的性能问题/Distinct和group by的性能/备库自增主键问题

    44 答疑(三) Join的写法 35节介绍了join执行顺序,加了straight_join,两个问题: --1 如果用left join,左边的表一定是驱动表吗 --2 如果两个表的join包含多 ...

  2. 【ABAP系列】SAP abap dialog screen屏幕参数简介

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP abap dialog ...

  3. 【FICO系列】SAP 关于SAP中的记账码的解释

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[FICO系列]SAP 关于SAP中的记账码的解 ...

  4. AWS Cloud Practioner 官方课程笔记 - Part 1

    课程笔记: 1. 3种访问AWS服务的方式: GUI, CLI, SDK 前两种是用户用来访问的,SDK可以让程序调用去访问服务. 2. core services 以及通用的use cases Am ...

  5. SpringBoot(五) -- SpringBootWeb登录示例

    一.解决index.html访问 在SpringBoot中默认访问的首页是静态资源文件夹下的index.html,无法被Thymeleaf模板引擎解析,因此我们可以定义一个controller将默认请 ...

  6. BZOJ 1878(离散化+线段树)

    题面 传送门 分析 首先我们观察到区间范围较大,而区间个数较少,考虑离散化,将所有询问按照右端点进行排序 离散化之后研究区间颜色个数变化的规律 当我们处理到第a[i]个段时,设a[i]上一次出现的地方 ...

  7. RequireJS 入门(二)

    简介 如今最常用的JavaScript库之一是RequireJS.最近我参与的每个项目,都用到了RequireJS,或者是我向它们推荐了增加RequireJS.在这篇文章中,我将描述RequireJS ...

  8. VUE搭建脚手架CLI

    1.vue的安装基于node,一定要确保本机已经安装node,node安装完成之后,会自带npm包.node下载地址:nodejs.cn/download/ 安装完成以后使用 ,进入cmd使用以下命令 ...

  9. python学习笔记(7): 面向对象

    class Foo: #类中的函数 def bar(self): #功能阐述 print('Bar') pass def hello(self,name): print('i am %s' %name ...

  10. 【新手向】一个超简单的基于jQuery ajax的天气预报Demo

    <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...