iOS编码规范精简版-根据apple、google等规范总结而来

简介: 目录1.格式和换行 2.命名 3.oc下的cocoa编码规范 4.注释要求 5.其他 6.参考文档 附:ARC下编码注意事项 序此文档根据apple、google以及其他一些业界知名的oc编码规范整理而成,并作了大量精简,旨在为大家的iOS开发规范提供一份简单、清晰、统一的参考指南。

目录

1.格式和换行
2.命名
3.oc下的cocoa编码规范
4.注释要求
5.其他
6.参考文档
附:ARC下编码注意事项

此文档根据apple、google以及其他一些业界知名的oc编码规范整理而成,并作了大量精简,旨在为大家的iOS开发规范提供一份简单、清晰、统一的参考指南。

1.格式和换行

1.1 只使用2个空格来缩进,不使用tab.
1.2 方法长度不超过100行,建议不超过80行。
1.3 方法- 和 + 和返回值之前为1个空格;方法参数之间有一个空格,其他地方不出现多余的空格。
1.4 条件语句的格式,推荐如下:

if (user.isHappy) 
{
  //Do something
} 
else 
{
  //Do something else
}
或:(苹果官方代码缩进方式)
if (user.isHappy) {
  //Do something
} else {
  //Do something else
}

不推荐如下的缩进:

if (user.isHappy)
{
    //Do something
}
else {
    //Do something else
}

2.命名

2.1 命名统一使用驼峰命名法;只采纳有广为人知含义的缩写,比如info、msg、UI、HTTP这类。自造的缩写不被认可。总体的命名原则是清晰和一致,避免歧义。
2.2 命名类、协议、常量和typedef结构体时考虑使用前缀,主要目的是为了避免冲突。方法名存在特定类的命名空间内,无需使用前缀。
2.3 方法首字母小写(方法以大写缩略词开始除外);文件夹名和类名首字母大写。不使用下划线作为私有方法的前缀,此方式被苹果保留。
2.4 全局常量尽量不要使用宏定义。宏很可能被重定义,而且引用不同的文件可能会导致宏的不同,所以尽量使用const来定义常量。
2.5 避免使用newXXX、getXXX、setXXX来命名变量和方法。

3.oc下的cocoa编码规范

3.1 使用#pragma mark来分类方法,参考以下结构:

#pragma mark - Lifecycle

- (instancetype)init {}
- (void)dealloc {}
- (void)viewDidLoad {}
- (void)viewWillAppear:(BOOL)animated {}
- (void)didReceiveMemoryWarning {}

#pragma mark - Custom Accessors

- (void)setCustomProperty:(id)value {}
- (id)customProperty {}

#pragma mark - IBActions

- (IBAction)submitData:(id)sender {}

#pragma mark - Public

- (void)publicMethod {}

#pragma mark - Private

- (void)privateMethod {}

#pragma mark - Protocol conformance
#pragma mark - UITextFieldDelegate
#pragma mark - UITableViewDataSource
#pragma mark - UITableViewDelegate

#pragma mark - NSCopying

- (id)copyWithZone:(NSZone *)zone {}

#pragma mark - NSObject

- (NSString *)description {}

3.2 重载系统方法时,不要忘记先调用super的方法;比如init、viewdidload等。
3.3 属性必须指定其类型:比如(nonatomic,strong)。
3.4 使用#import引入oc/oc++头文件,使用#include引入c/c++头文件。
3.5 尽量精简你的公开api接口。无需公开的方法应为私有。
3.6 init和dealloc方法中避免使用self.来访问成员变量。
3.7 dealloc方法中对变量的释放应和初始化时的顺序相反。
3.8 对nsstring使用copy。
3.9 不要手动抛出objective-c的异常(但你可以尝试捕获异常以增加应用的健壮性)。
3.10 不同类型的强制转换需要注意是否造成数据丢失、溢出等问题。
3.11 推荐使用@property来自动合成属性,如非必要无需再写@synthesize相关代码。

4.注释要求

注释一般用来解释代码的意图。要保持注释和代码同步更新,表达准确,避免误导。尽可能写自注释的代码。尽量使用单行注释而不是块注释;需要文档化的代码可以使用vvdocumenter-xcode插件来帮助生成。

5.其他

5.1 delegate对象不应该被retain,这样做会造成retain环。
5.2 使用__weak来消除block中的retain环,例如:

__weak __typeof(self)weakSelf = self;
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
            __strong __typeof(weakSelf)strongSelf = weakSelf;
            // use strongSelf here to invoke methods.
            [strongSelf testSelfMethod];
            };

5.3 苹果官方主要推荐的是MVC的架构,其他各种流行架构也是在MVC基础上的变种。写代码时需要注意model/view/controller之间的分离,保持清晰的层次关系。

6.参考文档

苹果cocoa编码指南
google objc编码指南
objc编码指南:by raywenderlich.com

7.附:ARC下编码注意事项

7.1.代码中不能使用retain, release, retain, autorelease
7.2.不重载dealloc(如果是释放对象内存以外的处理,是可以重载该函数的,但是不能调用[super dealloc])
7.3.不能使用NSAllocateObject, NSDeallocateObject
7.4.不能在C结构体中使用对象指针
7.5.id与void *间的如果cast时需要用特定的方法(__bridge关键字)
7.6.不能使用NSAutoReleasePool、而需要@autoreleasepool块
7.7.不能使用“new”开始的属性名称 (如果使用会有下面的编译错误”Property’s synthesized getter follows Cocoa naming convention for returning ‘owned’ objects”)

目录
相关文章
|
自然语言处理 iOS开发 C++
Alibaba.com瘦包40MB——业界最全的iOS包大小技术总结
本文总结提炼了Alibaba.com App的瘦身的技术和策略,系统化地介绍APP瘦身的业务价值、分析技术、瘦身技术、防劣化机制,让读者可以系统化地了解APP瘦身的技术体系。并基于实践经验,介绍各种瘦身技术的ROI,让读者可以避免踩雷,将资源浪费在效果不佳的技术上。希望对你有所帮助。
Alibaba.com瘦包40MB——业界最全的iOS包大小技术总结
|
JSON 自然语言处理 编译器
Alibaba.com瘦包40MB——业界最全的iOS包大小技术总结
前言包大小是衡量APP性能的一项重要指标,它直接影响用户的下载点击率(包太大不想下)、下载安装成功率(下载慢不用了)、APP卸载率(太占空间先删掉)。包大小的计算逻辑很简单,它是各种类型的文件占用磁盘大小相加。APP瘦身的技术却很复杂,代码文件的复杂度和编译器策略决定了可执行文件的大小,业务功能和工程架构决定了代码文件的复杂度。iOS APP瘦身,需要掌握的技能有XCode构建技术、LLVM编译器
3748 0
Alibaba.com瘦包40MB——业界最全的iOS包大小技术总结
|
4月前
|
人工智能 自然语言处理 云计算
iOS迎来AI升级:揭秘Apple全新“智能”系统
iOS迎来AI升级:揭秘Apple全新“智能”系统
iOS迎来AI升级:揭秘Apple全新“智能”系统
|
6月前
|
人工智能 数据安全/隐私保护 iOS开发
苹果在WWDC24上宣布的所有内容:Apple Intelligence、集成ChatGPT的Siri、iOS 18
苹果在WWDC24上宣布的所有内容:Apple Intelligence、集成ChatGPT的Siri、iOS 18
|
7月前
|
安全 数据处理 Android开发
安卓隐私权政策和Google Play规范更新
【4月更文挑战第14天】谷歌针对安卓平台的隐私权政策和Google Play规范进行重要更新,强化用户隐私保护和安全标准。新政策强调最小化数据收集,要求开发者明确告知用户敏感数据用途,并限制不必要的后台数据处理。Google Play规范更新要求应用详述数据收集方式,增加安全审查机制,确保无恶意代码。开发者面临调整,但有机会提升应用安全标准,赢得用户信任。用户数据安全得到提升,移动生态系统将更健康、可持续。
140 1
|
7月前
|
安全 编译器 C语言
MISRA C++ 、Google C++ 、AUTOSAR Adaptive Platform编码 C++ 规范总结
MISRA C++ 、Google C++ 、AUTOSAR Adaptive Platform编码 C++ 规范总结
199 1
|
安全 Go 数据安全/隐私保护
免费升级到 iOS 17 Developer Beta:官方Apple Store升级方案与爱思助手方法比较
免费升级到 iOS 17 Developer Beta:官方Apple Store升级方案与爱思助手方法比较
720 0
|
iOS开发
Zoom在App Store上架10周年之际 全球iOS和Google Play的累计下载量已超10亿次
Zoom在App Store上架10周年之际 全球iOS和Google Play的累计下载量已超10亿次
126 0
Zoom在App Store上架10周年之际 全球iOS和Google Play的累计下载量已超10亿次
|
编解码 iOS开发
IOS__UI设计规范
IOS__UI设计规范
338 0
IOS__UI设计规范

热门文章

最新文章

下一篇
无影云桌面