在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C ++语言完全兼容的情况下,给出主机或操作系统专有的特征。由于太复杂,在OC中主要在以下几个方面使用到:
用途一:用于标识代码
它们告诉Xcode编译器,要在编辑器窗格顶部的方法和函数弹出菜单中将代码分隔开,如下图所示:
一些类(尤其是一些控制器类)可能很长,方法和函数弹出菜单可以便于代码导航。此时加入#pragma 指令对代码进行逻辑组织很有效果。
值得注意的地方
**#pragma mark – 的“-”后面不能有空格。
如果你的标志没有出现在弹出菜单中,比如没有分隔线出现,请在Xcode菜单 “Preferences..”中的 “Code Sense”选项取消选中”Sort list alphabetically”即可。
用途二:用对OC警告的处理
一个忽略整数警号的例子:
//#pragma clang diagnostic push
//#pragma clang diagnostic ignored "-Wunused-variable"
int a;
//#pragma clang diagnostic pop
warnings是编码中很重要的一个环节,编译器给出合理的warning能帮助开发者找到自己代码的问题,防止很多bug产生。 默认用XCode创建一个工程,会自动开启一些重要的warnings,但是更多的时候,我们需要编译器更完整的提醒。
iOS开发采用Clang编译器。LLVM是一个开源的编译器架构,Clang是LLVM的一个编译器前端。
更多关于 Clang 和 LLVM请点击: iOS——LLVM、Clang浅析
想了解更多关于#pragma请移步到以下文章: