文档章节

#pragma

背锅侠
 背锅侠
发布于 2015/06/04 23:56
字数 452
阅读 21
收藏 0

        茶歇时间,随手作点笔记。记录#pragma在xocde中的两个主要任务。本人是小辈,对于IOS知识的掌握也只是略懂一二,请大家勿吐口水。小辈恭送大神飘过。在这先感谢支持我博文的朋友们,谢谢你们!

        #pragma声明主要完成两个主要任务:整理代码和防止编译器警告。打开xcode,密密麻麻的代码让人无从下手,缺少惯性和内部一致性的代码使得一个项目难以维持和协作,看起来真让人头疼。我们可以使用#pragma mark整理代码,例如:

#pragma mark - UIViewController 
- (void)viewDidLoad 
{ 
  ... 
} 
#pragma mark - IBAction 
- (IBAction)cancel:(id)sender 
{  
 ... 
}

使用#pragma mark来将代码分割成逻辑区块,不仅使得阅读代码变得容易,而且在xcode源导航也便于寻找。有一个好的惯例,将各类子类方法根据它们的超类组合放在一起,比如一个NSInputStream子类放在NSStream的组里,如IBAction对应的通知、选择器等之类的方法,建议有他们的各自的区块,以便于寻找。

另外一面,用#pragma声明防止来自编译器或者静态分析器的警告。我们经常会使用到第三方代码,如果第三方代码编译时生成大量的警告,那是让人非常头疼的事情,这时候#pragma就派上用场了:

        

// completionBlock在AFURLConnectionOperation中被手动的设置为nil来打破保留周期。

#pragma clang diagnostic push 
#pragma clang diagnostic ignored "-Warc-retain-cycles"  
    self.completionBlock = ^ {   
          ...  
}; 
#pragma clang diagnostic pop
本例来自AFNetworking,通过使用#pragma clang diagnostic push/pop来忽视特定的警告。你可以在 读到关于更多#pragma的LLVM用法的知识.


© 著作权归作者所有

背锅侠

背锅侠

粉丝 10
博文 18
码字总数 13050
作品 0
东城
CTO(技术副总裁)
私信 提问
用mingw编译KBEngine报错求解

@开源中国部长- 你好,想跟你请教个问题: 编译错误如下: cd dependencies/g3dlite && make all make[2]: Entering directory `/d/Disk/app-win-developing/kbengine-0.6.1/kbe/src/lib/depe......

g1017
2015/06/07
433
1
UIViewController生命周期及方法调用顺序

2016/1/25 00:03 #pragma mark - 加载视图 - (void)loadView { [super loadView]; NSLog(@"加载视图"); } #pragma mark - 视图加载完成 - (void)viewDidLoad { [super viewDidLoad]; NSLog(@......

阴雨音语
2016/01/25
71
0
ios中的 Get & Post

Get & Post 1> Get请求直接从服务器拿数据 2> Post请求,需要先弄一个数据体,将数据体提交给服务器,才能获取到服务器的响应 下面是我post和get方法的关键代码主要是一个用户名和密码的登录...

哥特复心
2014/02/01
1K
1
VC中pragma指令简介(转)

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明 http://yangwei.blogbus.com/logs/1550523.html pragma指令简介 在编写程序的时候,我们经常要用到#pragma指令来设定编译...

技术小美
2017/11/12
0
0
#pragma message预编译指令使用技巧

一般情况下,#pragma message( messagestring )是在编译期间,将一个文字串(messagestring)发送到标准输出窗口。典型的使用方法是在编译时报告和显示信息。下面的代码段是编译期间在标准输...

robslove
2015/02/27
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring使用ThreadPoolTaskExecutor自定义线程池及实现异步调用

多线程一直是工作或面试过程中的高频知识点,今天给大家分享一下使用 ThreadPoolTaskExecutor 来自定义线程池和实现异步调用多线程。 一、ThreadPoolTaskExecutor 本文采用 Executors 的工厂...

CREATE_17
今天
5
0
CSS盒子模型

CSS盒子模型 组成: content --> padding --> border --> margin 像现实生活中的快递: 物品 --> 填充物 --> 包装盒 --> 盒子与盒子之间的间距 content :width、height组成的 内容区域 padd......

studywin
今天
7
0
修复Win10下开始菜单、设置等系统软件无法打开的问题

因为各种各样的原因导致系统文件丢失、损坏、被修改,而造成win10的开始菜单、设置等系统软件无法打开的情况,可以尝试如下方法解决 此方法只在部分情况下有效,但值得一试 用Windows键+R打开...

locbytes
昨天
8
0
jquery 添加和删除节点

本文转载于:专业的前端网站➺jquery 添加和删除节点 // 增加一个三和一节点function addPanel() { // var newPanel = $('.my-panel').clone(true) var newPanel = $(".triple-panel-con......

前端老手
昨天
8
0
一、Django基础

一、web框架分类和wsgiref模块使用介绍 web框架的本质 socket服务端 与 浏览器的通信 socket服务端功能划分: 负责与浏览器收发消息(socket通信) --> wsgiref/uWsgi/gunicorn... 根据用户访问...

ZeroBit
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部