善用#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{ ...
随机推荐
- Django ORM的继承关系
ORM中通常将对象引用映射到外键,但是对于继承,关系数据库中没有自然有效的方法来对应.从数据存储的角度来看,在映射继承关系时,可以采用几种方式(参考JPA中的InheritanceType.定义): ...
- 软件定义网络基础---OF-Config协议
交换机与控制器继续通信前,是需要对其功能.特性以及资源进行配置才能进行工作,这些配置是如何实现的?是由专门的配置协议指导完成的 一:OF-Config协议 是OpenFlow交换机管理配置协议,是Op ...
- 【linux】Linux 运行进程实时监控pidstat命令详解
简介 pidstat主要用于监控全部或指定进程占用系统资源的情况,如CPU,内存.设备IO.任务切换.线程等.pidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自上 ...
- 聚类K-Means和大数据集的Mini Batch K-Means算法
import numpy as np from sklearn.datasets import make_blobs from sklearn.cluster import KMeans from s ...
- ubuntu下vs code配置c++
链接地址:https://blog.csdn.net/u010648921/article/details/82628616 摘要:Ctrl+Shift+B, F5
- 单位rem 触屏适配总结
总结过的:定宽320 缩放适配手机屏幕 参考文章:web app变革之rem 先了解一下rem css3 中引入了新的长度单位,rem. 官方定义 font size of the root elem ...
- 【Tools】三款笔记本电脑硬件检测工具-官网下载
一.CPU-Z 下载地址: https://www.cpuid.com/softwares/cpu-z.html 描述: CPU-Z已经是大名鼎鼎了.这里就不多说了. 二.Cinebench 下 ...
- CF1227D Optimal Subsequences
思路: 首先对于单个查询(k, p)来说,答案一定是a数组中的前k大数.如果第k大的数字有多个怎么办?取索引最小的若干个.所以我们只需对a数组按照值降序,索引升序排序即可. 多个查询怎么办?离线处理. ...
- 【VS开发】最小化到托盘 shell_notifyicon和NOTIFYICONDATA
shell_notifyicon和NOTIFYICONDATA Shell_NotifyIcon函数,向任务栏的状态栏发送一个消息 函数原型 BOOL Shell_NotifIcon( DWORD d ...
- C++ String 及其与char[]的比较
在学习C++之前 一般都是学过了C语言了 在C语言中 我们对字符串进行保存操作 使用的是char[] 但是在C++中 string比char[]的使用更为频繁 常见 下面稍微讲一 ...
