善用#waring,#pragma mark 标记
在项目开发中,我们不可能对着需求一口气将代码都写好。开发过程中肯定遇到诸如需求变动,业务逻辑沟通,运行环境的切换等这些问题。当项目大的时候,如果木有形成统一的代码规范,在项目交接和开发人员沟通上将会带来很大的麻烦。
#pragma mark -
这个标记在iOS开发中用得最多了。其实最主要的是用来进行标记的,当然也有注释的作用在里面。当然我们也可以用//,/* */等常用注释来说明。但是用#pragma mark -不同的是可以将整个文件的函数以类似分组的形式展现。当我们点击Xcode 导航栏上面的文件后面的列表时将会得到如图所示的界面:
这样当其他开发者查看此文件时,可以清晰的看到整个函数分布,也清晰的知道各个功能相关的函数。如果鼠标点击其中的标记可以直接跳到此标记的位置,非常的方便。当进行业务上沟通和调用时非常省时省力。用#pragma mark -还有一个好处就是在开发中我们经常会实现其他类的delegate,datasource,protocol等,如果我们#pragma mark - UITableViewDelegate,当我们用鼠标加上command点击UITableViewDelegate会直接跳到这个delegate定义的地方,可以方便的查看相关方法。个人对#pragma mark - 作用的理解是便于开发者之间相互交流。特别是多人的大项目时,如果大家都按各自喜好随便使用#pragma mark - 那么对于项目开发和维护来说是非常灾难性的。不仅开发者自己不清楚自己的整个文件的结构,当其他开发者进行接手开发时将是件非常头大的事情。由于objc函数命名时具有口语化的特点,函数一看名字就知道其要实现的功能,所以平常开发中只写一些关键性说明的注释,如bool变量的说明,业务处理的逻辑等。结合#pragma mark - 可以很方便的让其他开发者理解。
#waring
这个更加建议大家使用,Xcode默认支持了将#waring标记以编译警告的形式显示出来。在软件开发中,大家都会用TODO,FIXME,XXX等特殊注释。这些关键字也被很多IDE所支持。如果在代码中加入#warning 此处需要修改 by james,在Xcode的编译警告窗口中看到:

在开发中,我们苦逼程序员的思维不断的被打断,不断的来回切换。比如业务逻辑未定,网络请求地址切换,写死代码进行本地测试,项目联调等操作。最蛋疼的时项目上线后突然发现请求地址不对,本地含有写死的测试数据或者我们需要用到其他项目模块代码时,临时改动了别人代码,但木有改回去。这种情况就属于重大项目事故了。一两个不确定改动,苦逼程序员或许会记住,但是多了之后,那直接是百分之一万会被遗漏的。所以最好的方法是在你不确定的业务,测试数据等地方标上编译警告。以#waring 开头写下原因,标记人,时间等说明信息。这样在项目开发结束后,会有一个专门的时间去消除这些警告,以确保没有遗漏的地方。
对于依然喜欢用TODO,FIXME,XXX的开发者来说可以,设置下工程的"Build Phases",然后添加New Run Script Build Phase,添加以下代码
KEYWORDS="TODO:|FIXME:|XXX:"
find "${SRCROOT}" \( -name "*.h" -or -name "*.m" \) -print0 | xargs -0 egrep --with-filename --line-number --only-matching "($KEYWORDS).*\$" | perl -p -e "s/($KEYWORDS)/ warning: \$1/"
这样xocde就可以将这些特殊标记以#waring的形式展现出来。
善用#waring,#pragma mark 标记的更多相关文章
- #pragma mark 添加分割线 及 其它类似标记 - 转
#pragma marks Comments containing: MARK: TODO: FIXME: !!!: ???: 除了使用 #pragma mark -添加分割线之外, 以上几种标记均可 ...
- layoutSubviews #pragma mark -
>>>layoutSubviews: layoutSubviews是对sbuviews的重新布局,比如,我们想更新子视图的位置,可以通过调用layoutSubviews方法(不能直接 ...
- 二.OC基础--1,对象的存储细节,2,#pragma mark指令,3,函数和对象方法的区别,4,对象和方法之间的关系 ,5.课堂习题
1,对象的存储细节, 1. 当创建一个对象的时候:Person *p1 = [Person new],做了三件事情: 1,申请堆内存空间: 2,给实例变量初始化: 3,返回所申请空间的首地址; 2. ...
- android studio: 实现类似于XCode中的#pragma mark的效果
代码行数写多了,想找一个指定的方法真困难,关键有时候记不住方法的名字,用Ctrl+O也不好使,突然想到以前做iOS开发时,XCode里有一个#pragma mark的功能,很好用:在代码中定义这样一个 ...
- pragma mark - 合成图
#pragma mark - 合成图 - (UIImage *)getShareImageShell:(UIImage *)shareImage { if (shareImage) { CGSize ...
- IOS笔记 #pragma mark的用法和作用(方便查找和导航代码)
简单的来说就是为了方便查找和导航代码用的. 下面举例如何快速的定位到我已经标识过的代码. #pragma mark 播放节拍器 - (void) Run:(NSNumber *)tick{ ...
- 李洪强iOS开发之OC[015]#pragma mark的使用
// // main.m // 14 - #pragma mark的使用 // // Created by vic fan on 16/7/10. // Copyright © 2016年 李 ...
- IOS笔记 #pragma mark的用法
简单的来说就是为了方便查找和导航代码用的. 下面举例如何快速的定位到我已经标识过的代码. #pragma mark 播放节拍器 - (void) Run:(NSNumber *)tick { //.. ...
- (转)IOS笔记 #pragma mark的用法
简单的来说就是为了方便查找和导航代码用的. 下面举例如何快速的定位到我已经标识过的代码. #pragma mark 播放节拍器 - (void) Run:(NSNumber *)tick{ ...
随机推荐
- 【Linux】反向代理
Nginx server { root /data/wwwroot/; server_name www.test.com; location / { proxy_http_version 1.1; p ...
- v关于使用Glide加载图片失败时显示自己特定的图片
Glide是Android加载图片的一个框架. 常用加载图片到imageView:Glide.with(this).load(url).into(ImageView imageview). 当加载失败 ...
- delphi self.Update 什么作用
更新指定窗口的客户区.如果窗口更新的区域不为空,UpdateWindow函数就发送一个WM_PAINT消息来更新指定窗口的客户区.函数绕过应用程序的消息队列,直接发送WM_PAINT消息给指定窗口的窗 ...
- CountDownLatch和CyclicBarrier使用上的区别
一.CountDownLatchDemo package com.duchong.concurrent; import java.util.Map; import java.util.concurre ...
- CentOS 7/6系统升级内核版本到5.2.2
由于公司服务器新业务需要,需要将CentOS 7系统的内核(3.10.0-229)进行升级. 关于内核版本的定义:版本性质:主分支ml(mainline),稳定版(stable),长期维护版lt(lo ...
- GWAS中的名称概念
基因: 是指决定生物某一遗传性状的染色体DNA片段 基因型: `基因型`又称`遗传型`,是某一生物个体全部基因组合的总称.它反应生物体的遗传构成,即从双亲获得的全部基因的总和.遗传学中具体使用的基因型 ...
- git当前项目免密提交
在项目目录下,执行: vim .git/config 在url后边添加用户名密码即可 ``` [core] repositoryformatversion = filemode = true bare ...
- [转帖]Nginx rewrite 规则 与 proxy_pass 实现
Nginx rewrite 规则 与 proxy_pass 实现 https://www.cnblogs.com/jicki/p/5546916.html Nginx rewrite 规则 与 pr ...
- SpringMVC获取参数的几种方式
前言: 年末了,忙了一年了却发现系统的整理的东西很少,一些基础的东西都未做整理,这里就将它随便整理一下,增加一些印象,当然在网上看到一些好的资料也会整理下来以备后用.今天整理一下springMVC获取 ...
- 对比JPA 和Hibernate 和 Mybatis的区别
1.JPA.Hibernate.Mybatis简单了解 1.JPA:本身是一种ORM规范,不是ORM框架.由各大ORM框架提供实现. 2.Hibernate:目前最流行的ORM框架,设计灵巧,文档丰富 ...
