iOS XCode启用/关闭Clang Warnings

原创Blog。转载请注明出处

blog.csdn.net/hello_hwc

欢迎关注我的iOS SDK具体解释专栏,这里有非常多基础的文章。

http://blog.csdn.net/column/details/huangwenchen-ios-sdk.html



前言:warnings是编码中非常重要的一个环节,编译器给出合理的warning能帮助开发人员找到自己代码的问题,防止非常多bug产生。

默认用XCode创建一个project,会自己主动开启一些重要的warnings。可是很多其它的时候,我们须要编译器更完整的提醒。

iOS开发採用Clang编译器。


默认的Warning能够在Build Settings里找到

在search里搜索Warnings,就能够看到如图,这是为全部语言开启的warnings

当然。也能够为不同语言开启warning,也在Build Settings里

可是。这样一个个的开启关闭定制化非常好。有时候我们仅仅须要开启全部或者开启全部重要的warnings就可以

这时候,进入

能够加入一些build flag来启用警告。基本的就是三个

1.-Wall Clang觉得自己能够准确报出的警告

2. -Wextra额外的苛刻的警告。这些警告不一定会造成错误。比如假设使用这个flag,把singned 赋值给unsigned就会触发警告,而大多数时候这样赋值是没问题的。

3.-Weverything 全部警告

一般的项目都是开启-Wall-Wextra两个警告来保证没有严重错误。当然。假设有些明显的不会出错。能够用关闭某个或者某些警告。

-Wall -Wno-unused-variable //启用Wall可是剔除unused-variable

用语句强制开启或者关闭某个警告

强制开启一个警告

#warning "This method can not be used"

强制开启一个错误

#error "You must add this key,or you will fail"

强制关闭一个警告

比如

这里会出现警告test这个selector没有实现

[self performSelector:@selector(test) withObject:nil];

强制关闭这个警告

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wundeclared-selector"
    [self performSelector:@selector(test) withObject:nil];
#pragma clang diagnostic pop

经常使用的CLang Warning

  • Wall
  • Wbad-function-cast
  • Wcast-align
  • Wconversion
  • Wdeclaration-after-statement
  • Wdeprecated-implementations
  • Wextra
  • Wfloat-equal
  • Wformat=2
  • Wformat-nonliteral
  • Wfour-char-constants
  • Wimplicit-atomic-properties
  • Wmissing-braces
  • Wmissing-declarations
  • Wmissing-field-initializers
  • Wmissing-format-attribute
  • Wmissing-noreturn
  • Wmissing-prototypes
  • Wnested-externs
  • Wnewline-eof
  • Wold-style-definition
  • Woverlength-strings
  • Wparentheses
  • Wpointer-arith
  • Wredundant-decls
  • Wreturn-type
  • Wsequence-point
  • Wshadow
  • Wshorten-64-to-32
  • Wsign-compare
  • Wsign-conversion
  • Wstrict-prototypes
  • Wstrict-selector-match
  • Wswitch
  • Wswitch-default
  • Wswitch-enum
  • Wundeclared-selector
  • Wuninitialized
  • Wunknown-pragmas
  • Wunreachable-code
  • Wunused-function
  • Wunused-label
  • Wunused-parameter
  • Wunused-value
  • Wunused-variable
  • Wwrite-strings

困难模式

所谓的困难模式就是开启全部警告。而且把警告当作error。这意味着,仅仅要另一个警告存在,那么程序将不能编译执行。



參考链接

http://onevcat.com/2013/05/talk-about-warning/

http://programmers.stackexchange.com/questions/122608/clang-warning-flags-for-objective-c-development

http://amattn.com/p/better_apps_clang_weverything_or_wall_is_a_lie.html

http://nshipster.cn/clang-diagnostics/

时间: 2024-10-05 23:09:56

iOS XCode启用/关闭Clang Warnings的相关文章

iOS Xcode常用插件

在iOS的应用程序开发中,有些插件可以很方便我们的工作 只需要你把它们下载下来 编译即可 下面为大家推荐几种: 1  VVDocument--这是xcode规范注释的生成器  编译这个Demo之后 然后关闭Demo 在你的项目中需要注释的地方连续输入三个“/” 即出效果如下图 2. ColorSense --这是xcode中颜色识别与预览的插件 下载并编译此Demo  然后关闭Demo  在你项目中需要的地方输入代码 效果如下图 3.KSImageNamed --这是xcode中图片文件名自动补

iOS Xcode之SVN(remove git)

项目用SVN比较多,所以大家都把精力放在如何在XCODE上使用SVN. 配置SVN当然是很简单,但提交都默认出现git的提交窗,否则要到repositories界面去提交. 目前没有找到什么更好的办法,就做了两个处理: 1.在Repositories里面把 相应的 git相关的项目目录移除(见界面左下角的“-”号): 2.先关闭xcode,然后到终端界面,进入到相应的目录,用rm -fr .git 命令删除git. 3.关于.a等外部资源的提交 由于默认是将.a文件忽略和不提交的,因此需要修改下

IOS Xcode 无法识别IOS device 突然发生的

今天 我用真机mini好好地 ,再想测试一下iphone 4  发生了意外 两个测试机都找不到设备了 但是 都在充电 还能连接 itune !!!! 我郁闷了 解决办法 是 Mac iTunes 重新更新  据说 itunes 有时候会犯病 影响Xcode  所以 得卸载 重新装 .然后就好使了. 心得:使用测试机 要正常插入 点击iTunes退出机器 . IOS Xcode 无法识别IOS device 突然发生的,布布扣,bubuko.com

Ubuntu中启用关闭Network-manager网络设置问题!

Ubuntu中启用关闭Network-manager网络设置问题! [Server版本] 在UbuntuServer版本中,因为只存有命令行模式,所以要想进行网络参数设置,只能通过修改/etc/network/interfaces.具体设置方法如下: (1) UbuntuServer 修改 IP地址 打开/etc/network/interfaces sudo vim/etc/network/interfaces 加入以下语句: auto eth0 iface eth0inet static a

ios xcode如何修改应用的名称

ios xcode如何修改应用的名称 当你创建一个project时,会要求你输入product name & company identifier,这两个property的值should和你在apple developer member center的"Provisioning Portal"的"App IDs"里创建的bundle identifier (NOT App ID)匹配!如果不匹配的话,push notification feature和clo

ios Xcode编译错误

[BEROR]CodeSign error: code signing is requiredfor product type 'Application' in SDK 'iOS 7.1' xcode编译出现这个错误,我的做法是,附图 ios Xcode编译错误

iOS Xcode及模拟器SDK下载

原文: Xcode及模拟器SDK下载 如果你嫌在 App Store 下载 Xcode 太慢,你也可以选择从网络上下载: Xcode下载(Beta版打的包是不能提交到App Store上的) 绝对官方源!!!绝对官方源!!!绝对官方源!!!   不能确定自己的 Xcode 是否有问题?简单的一条命令就能验证! 在终端输入 spctl 命令,并带上安装的 Xcode 的路径: [ruby] view plain copy print? spctl --assess --verbose /Appli

iOS 开发之 - 关闭键盘 退出键盘 的5种方式

iOS 开发之 - 关闭键盘 退出键盘 的5种方式 1.点击编辑区以外的地方(UIView) 2.点击编辑区域以外的地方(UIControl) 3.使用制作收起键盘的按钮 4.使用判断输入字元 5.关于键盘遮蔽的问题 1,点击编辑区以外的地方(UIView) 这是一种很直觉的方法,当不再需要使用虚拟键盘时,只要点击虚拟键盘和编辑区域外的地方,就可以将键盘收起,下面程式码是在 UIView 中内建的触碰事件方法函式,您可以参考 Touch Panel / 触碰萤幕 / 压力感应器的基本使用方式一文

ios xcode Could not load the "MyImage.png" image referenced from a nib in the bundle with identifier "com.mytest.MyProject"

出现找不到xib指定的图片,需要指定图片的完整路径,不能只是图片名 详见:http://vocaro.com/trevor/blog/2012/10/21/xcode-groups-vs-folder-references/ An image stored as a folder reference will not work with Interface Builder! When editing, IB is able to find the image file and allows yo