去掉xcode中警告的一些经验
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中警告的一些经验的更多相关文章
- 在Xcode中如何屏蔽某个源文件的编译警告信息
某些时候如果我们的源码在编译过程中出现大量的编译警告时,看起来是挺不爽的:但又确实没办法解决警告问题的时候,我们可以使用下面的方法来屏蔽指定的某个文件的所有警告信息. 1.在Xcode中选中工程文件. ...
- Xcode中Objc动态调用方法同时避免警告的几个办法
我们在Xcode中使用objc写代码的时候往往会碰到动态调用方法的时候. 如果是静态调用这很常见,不会有任何问题: [self performSelector:@selector(method)]; ...
- 在Xcode中使用Git进行源码版本控制
http://www.cocoachina.com/ios/20140524/8536.html 资讯 论坛 代码 工具 招聘 CVP 外快 博客new 登录| 注册 iOS开发 Swift Ap ...
- 解决cocos2dx在Xcode中运行时报:convert: iCCP: known incorrect sRGB profile 的问题
解决cocos2dx在Xcode中运行时报:convert: iCCP: known incorrect sRGB profile 的问题 本文的实践来源是参照了两个帖子完成的: http://dis ...
- 去掉Xcode源码末尾的空格
去掉Xcode源码末尾的空格 在用 Xcode 开发的时候,很容易就在行末增加一些空格了.这些空格在上传到 review board 上后 , 就会被特别的颜色显示出来.因为一种好的编程风格是说 , ...
- 网络粘贴---Xcode中可用到的快捷键
快捷键: 1.StoryBoard技巧 当你想直接在view中选择自己想要的元素时,但是又碍于一个view上叠加的元素太多很难直接选中,那么在这时,你同时按住键盘上的shift和 control键,然 ...
- Cocos开发中性能优化工具介绍之Xcode中Instruments工具使用
Instruments是动态分析工具,它与Xcode集成在一起,可以在Xcode中通过菜单Product→Profile启动.启动如图所示,Instruments有很多跟踪模板可以动态分析和跟踪内存. ...
- (转)Xcode 中设置部分文件ARC支持
ARC是什么 ARC是iOS 5推出的新功能,全称叫 ARC(Automatic Reference Counting).简单地说,就是代码中自动加入了retain/release,原先需要手动添加的 ...
- 【转】jsoncpp在xcode中的使用
http://blog.csdn.net/ashqal/article/details/8573392 考虑到cocos2dx需要使用jsoncpp做关卡的设置, 尝试用源代码直接放到项目以方便后期生 ...
随机推荐
- 从DT时代云栖大会聊聊恒生电子
从IT到DT,除了HOMS和配资,本文结合互联网金融的背景,帮助读者对恒生电子600570了解更多. 马云在2015杭州·云栖大会Computing Conference发表致辞时多次强调DT(Dat ...
- Mac基本配置
相关操作 配置文件 java 下载jdk-12.0.1_osx-x64_bin.dmg 配置环境变量 #配置java JAVA_HOME=/Library/Java/JavaVirtualMachin ...
- LeetCode——141 设计链表
题目: 简单说下思路: 用两个指针,一个跑得快,一个跑得慢(例如一个每次前进两步,一个前进一步),这样只要快指针不会撞上NULL(如果遇到了NULL的情况那么必然不存在环),快指针肯定会和慢指针碰面( ...
- Redux 中间件与函数式编程
为什么需要中间件 接触过 Express 的同学对"中间件"这个名词应该并不陌生.在 Express 中,中间件就是一些用于定制对特定请求的处理过程的函数.作为中间件的函数是相互独 ...
- python3爬虫之urllib初探
urllib主要包含request(请求模块).error(异常处理模块).parse(工具模块).robotparser(识别网站的robots.txt文件,是否允许爬取). request(请求模 ...
- TCP 和 UDP 的区别---还有一个UTP一
面试的时候会经常问到这些问题,所以要对比了解一下他们之间的差别,能讲出个所以然来.多积累多总结,懵逼中... TCP 和 UDP TCP与UDP基本区别 : 1.基于连接与无连接 2.TCP要求系统资 ...
- python 安装成windows服务
参考文档 https://blog.csdn.net/kongxx/article/details/65435076 https://www.cnblogs.com/lishuai0214/artic ...
- java 中断线程的几种方式 interrupt()
中断 中断(Interrupt)一个线程意味着在该线程完成任务之前停止其正在进行的一切,有效地中止其当前的操作.线程是死亡.还是等待新的任务或是继续运行至下一步,就取决于这个程序.虽然初次看来它可能显 ...
- Python学习第四十天函数的装饰器用法
在软件开发的过程中,要遵循软件的一些原则封装的,不改变原有的代码的基础增加一些需求,python提供了装饰器来扩展函数功能,下面说说函数装饰器用法 def debug(func): def ...
- asp.net Base64加解密
1.前端 JS: /* * base64.js * * Licensed under the BSD 3-Clause License. * http://opensource.org/license ...