文档章节

iOS编码的一些规范

召唤攻城狮
 召唤攻城狮
发布于 2014/04/11 13:27
字数 764
阅读 918
收藏 6

1、实例变量instance variable,最好带上前缀下划线,例如

@interface  Person:NSObject

{

    NSString *_name;

    int *_age;

}

@end

有时候在.m文件中也会用到实例变量instance variable,这时候也带上前缀下划线

@interface  Person()

{

    NSNumber *_salary;

}

@end

@implementation Person

@end

带上前缀下划线的好处就是让人明白,这就是在本类中使用,不会对外开放,算是一种比较好的变成习惯吧。


2、使用#pragma mark -来说明“方法的来源”

在.m文件中,我们可以看到很多大段大段的方法,这对阅读代码来说很不方便,因为一眼看过去不可能知道这个方法是私有方法,还是共有方法,还是代理方法,所以为了规范,可以这样来表明.m文件中方法的来源和用途,

(1)说明这是来自代理的方法

#pragma mark - xxxxDelegate,例如,

#pragma mark - UITableViewDelegate

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

{

    return xxx;

}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

    return yyy;

}


- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

    return zzz;

}

#pragma mark - UITextFieldDelegate

-(void)textFieldDidBeginEditing:(UITextField *)textField

{

}

#pragma mark - UIAlertDelegate

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex

{

}

这些系统提供的代理方法大家都懂,但是如果对于自定义或者第三库开源库中的代理方法,其他人不一定就看明白,所以使用这个#pragma mark - xxxDelegate来告诉其他人,这是来自某个代理的方法。

(2)说明这是私有方法

#pragma mark - Private methods

我们经常在ViewController.m文件中写了很多的私有方法,使用[self xxxMethod];来调用,我们自己明白,为了方便其他人也一下明白,可以照样告诉别人,

#pragma mark - Private methods

- (void)initViews

{

    [self.view setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"main_background.png"]]];

    self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:_sideButton] autorelease];

    self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:_postButton] autorelease];

    self.navigationItem.titleView = _sliderSwitch;

    self.strollTableView.scrollsToTop = YES;

}


- (void)initSliderSwitch

{

    _sliderSwitch = [[XWSliderSwitch alloc] initWithFrame:CGRectMake(0, 0, 118, 29)];

    _sliderSwitch.labelCount = 2;

    _sliderSwitch.delegate = self;

    [_sliderSwitch initSliderSwitch];

    [_sliderSwitch setSliderSwitchBackground:[UIImage imageNamed:@"top_tab_background2.png"]];

    [_sliderSwitch setLabelOneText:@"干货"];

    [_sliderSwitch setLabelTwoText:@"嫩草"];

}

这就告诉别人,这是个私有方法,只在本类中通过[self xxxMethods];调用

(3)说明这是共有方法

#pragma mark - Public methods

//点击侧边栏按钮

- (void)sideButtonDidClicked

{

    SideBarShowDirection direction = [SideBarViewController getShowingState] ? SideBarShowDirectionNone : SideBarShowDirectionLeft;

    if ([[SideBarViewController share] respondsToSelector:@selector(showSideBarControllerWithDirection:)]) {

        [[SideBarViewController share] showSideBarControllerWithDirection:direction];

    }

}

这样就告诉其他读者,这是类对象的方法,一般不在本类中调用,是对外开放的。

(4)说明这是UI控件事件触发的方法

#pragma mark - UIAction methods

- (void)buttonClicked:(id)sender

{

    //其实这个方法写的已经见名知意了   

}

-(IBAction)cancel:(id)sender

{

    [self.view removeFromSuperview];

}


个人感受和总结:

我之所以写这篇编码规范总结,是因为在团队合作中确实感受到看.m文件中非常多的方法时候那种纠结的心情,后来看了一些开源的代码,我觉得按照这种方式,可以很好地规范代码,增加可读性。当然,每个公司或者团队,肯定都会有自己的编码规范,我也只是抛砖引玉。

© 著作权归作者所有

共有 人打赏支持
召唤攻城狮
粉丝 183
博文 53
码字总数 49671
作品 0
玉林
私信 提问
IOS 内置URL schemes简介

在IOS的应用中经常会看到一些应用程序通过某个点击动作而直接跳到App Store页面,开始很奇怪这种第三方应用于IOS的系统应用交互时怎么实现的。后来发现苹果的开发者文档中关于这种通信的实现...

big军
2013/03/16
0
2
PhoneGap 1.8.1 发布,跨平台移动开发框架

PhoneGap官方今天发布了PhoneGap 1.8.1版本,主要修复了1.8版本中导致iOS平台上PhoneGap应用程序崩溃的bug。 该版本相对于之前的1.7版本,主要修复了iOS、Android、Windows Phone、黑莓和Web...

oschina
2012/06/14
912
3
iOS项目开发

主要需求: 通过远程网络对汽车进行OBD(启动、熄火、门锁检测、车辆状态设置与检测、胎压等相关汽车状态的设置与获取展示) 工作内容: 1. 熟悉车载CAN、OBD相关行业知识 2.负责智能穿戴产品I...

黄淑宾
2017/02/22
3
0
iOS三维菜单、调试工具、封装通讯录、网络框架、多种控件和动画等源码

iOS精选源码 一个调用系统通讯录和获取通讯录所有联系人的封装(http://www.code4app.com/thread-29726-1-1.html) ios scrollview嵌套tableview同向滑动(初级、进阶), 支持OC / Swift(http...

sunnyaigd
05/15
0
0
fir.im Weekly - 每个程序员都应当拥有的技能树

本周收集了一些优秀的 iOS & Android 开发资源和程序员 IT 技能拓展的 Tips. 知道创宇研发技能表 v3.0 作为程序员可能都听说过【知道创宇】,他们是一家黑客文化浓厚的安全公司。这张技能表为...

风起云飞fir_im
2015/09/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

linux之自定义命令

本人使用的是ubuntu系统,不喜欢建各种桌面快捷链接,但是每次启动个软件,去查找又麻烦,所以自定义了命令,来快捷的启动应用: 1、修改/etc/bash.bashrc,在文件末尾,加上如下List-1中的内...

克虏伯
11分钟前
0
0
linux基础

系统安全 sudo su chmod setfacl 进程管理 w top ps kill pkill pstree killall 用户管理 id usermod useradd groupad userdel 文件系统 mount umount fsck df du 网络应用 curl telnet mail......

关元
12分钟前
0
0
Caffe-源码分析(一)

CHECK_X函数,用于比较两个blob之间的值 CHECK_EQ(x,y)<<"x!=y",EQ即equation,意为“等于”,当x!=y时,函数打印出x!=y。 CHECK_NE(x,y)<<"x=y",NE即not equation,意为“不等于”,,...

Pulsar-V
13分钟前
1
0
三星Galaxy S10可能会配备TOF 3D摄像头

12月3日消息,据Phone Arena报道,三星Galaxy S10可能会配备TOF 3D摄像头。 Phone Arena报道称三星Galaxy S10一共有五颗摄像头(前置双摄+后置三摄),而5G版本的Galaxy S10后置四颗摄像头,...

问题终结者
36分钟前
10
0
fabric增删改查Mac

备份1.3版本,重新下载1.1版本到fabric文件夹 /opt/gopath/src/github.com/hyperledger/fabric -> /opt/gopath/src/github.com/hyperledger/fabric1.3 新建/opt/gopath/src/github.com/hype......

八戒八戒八戒
今天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部