美文网首页
iOS 开发文档规范

iOS 开发文档规范

作者: 沧州宁少 | 来源:发表于2018-05-07 12:47 被阅读0次

iOS 开发文档规范

  • Method 命名

    • 驼峰

    • 类前缀使用三个字符,避开2个字符的NS,UI,CG,CF,CA,WK,MK,CI,NC

    • 一个执行动作以动词开头。
      - (void)invokeWithTarget:(id)target

    • 直接返回内容不需要加get。间接返回内容,才需要加get。比如通过传入指针,func将操作指针改变内存存储的值,多个值返回的时候使用get

    • 如果子类的方法比父类更明确。更有针对性。不应该重写类本身提供的方法,应该添加一个新的方法

  • Accessor命名规范

    • 可以使用will,should,can 明确方法意义,但是不要使用do,does这类无意义的情态动词。
    • delegate 方法除非只有一个参数,否则冒号加到类名后面
  • Initlalize 规范

    • initialize类方法先于其他的方法调用。且initialize方法给我们提供了一个让代码once、lazy的地方。initialize通常被用于设置class的版本号。initialize方法的调用遵循继承规则(所谓继承规则,简单来讲是指:子类方法中可以调用到父类的同名方法,即使没有调用[super xxx])。如果我们没有实现initialize方法,运行时初次调用这个类的时候,系统会沿着继承链(类继承体系),先后给继承链上游中的每个超类发送一条initialize消息,直到某个超类实现了initlialize方法,才会停止向上调用。某个类的initialize方法可能会被调用多次
    • 如果超类的某个初始化方法不适合于子类,子类覆写这个超类的方法,并在其抛出异常。
    • 不要在子类的初始化方法中调用父类的secondary初始化方法。否则容易陷入方法调用死循环
    • 禁止在子类中使用self 访问属性
  • dealloc规范

    • 不要忘记在dealloc方法中移除通知和KVO
    • dealloc应该放在文件的最上面,并且刚好在 @synthesize 和 @dynamic 语句的后面。在任何类中,init 都应该直接放在 dealloc 方法的下面。
    • 在dealloc方法中,禁止将self作为参数传递出去,如果self被retain住,到下一个runloop在释放,会造成多次crash.
      -(void)dealloc{
      [self unsafeMethod:self];
      // 因为当前已经在self这个指针所指向的对象的销毁阶段,销毁self所指向的对象已经在所难免。如果在unsafeMethod:中把self放到了autorelease poll中,那么self会被retain住,计划下个runloop周期在进行销毁。但是dealloc运行结束后,self所指向的对象的内存空间就直接被回收了,但是self这个指针还没有销毁(即没有被置为nil),导致self变成了一个名副其实的野指针。
      // 到了下一个runloop周期,因为self所指向的对象已经被销毁,会因为非法访问而造成crash问题。
      }
  • block使用

    • block使用时必须对block判空
    • 注意block潜在的引用循环
  • 如果想获取window,不要使用view.window获取,请使用[[UIApplication sharedApplication] keyWindow]

  • 在使用到 UIScrollView,UITableView,UICollectionView 的 Class 中,需要在 dealloc 方法里手动的把对应的 delegate, dataSouce 置为 nil。

  • 一些经常被使用的文件建议做好缓存。避免重复的IO操作。建议只有在合适的时候再进行持久化操作。

  • 不要使用可能为nil的对象,对集合进行初始化。初始化之前对象要进行判空处理。否则会出现crash。

  • 禁止在多线程环境下直接访问可变集合对象中的元素。应该先对其进行copy,然后访问不可变集合对象内的元素

  • block中的return的作用域。block中的return代表的是使当前的block返回,而非使当前的整个函数体返回

  • 懒加载的适用场景

    • 一个对象的创建依赖于其他对象。
    • 项目中使用或者不用
    • 伴随着大量的计算或者性能消耗
  • 多线程规范

    • 禁止使用GCD的dispatch_get_current_queue()函数获取当前线程信息。
    • 剪切板的读取必要时候放在异步线程处理。
    • 仅当必须保证顺序的时候采用dispatch_sync,否则容易出现死锁,应避免应用使用dispatch_async。
  • 内存管理规范

    • 除非知道自己做什么,否则不建议将UIView类的对象加入到NSArray、NSDictionary、NSSet中。如有需要可以添加到NSMapTable 和 NSHashTable
  • 延迟调用规范。
    【必须】performSelector:withObject:afterDelay:要在有Runloop的线程里调用,否则调用无法生效。

    说明:异步线程默认是没有runloop的,除非手动创建;而主线程是系统会自动创建Runloop的。所以在异步线程调用是请先确保该线程是有Runloop的。

  • .h尽量不要暴露属性。属性暴露只读的,.h文件中只暴露出一些必要的类、公开的方法、只读属性;私有类、私有方法和私有属性以及成员变量,尽量写在.m文件中

相关文章

  • 移动端iOS开发规范文档

    移动端iOS开发规范文档 序言 根据网上的一些OC编码规范整理归纳而成,为了利于项目维护以及规范开发,促进成员之间...

  • 移动端iOS开发规范文档

    移动端iOS开发规范文档 目录 格式与换行 命名 Objective-C下的cocoa编码规范 注释要求 其他 参...

  • iOS开发规范文档

    此文档根据apple,google以及行业中比较知名的OC编码规范整理归纳而成,旨在为大家的iOS开发规范提供一份...

  • iOS 开发文档规范

    iOS 开发文档规范 Method 命名驼峰类前缀使用三个字符,避开2个字符的NS,UI,CG,CF,CA,WK,...

  • iOS开发规范文档

    命名原则 1.基本原则 (1)清晰。 命名应该是以清晰为主、简洁为辅。总的来讲不要使用单词的简写,除了使用非常常见...

  • IOS 开发规范文档

    版权声明:本文为博主原创文章,未经博主允许不得转载。转载请注明转至Z.MJun的简书 1. 每一行的字数限制 80...

  • iOS开发规范文档

    1文件组织结构 1.1结构说明 1)iOS工程文件结构分物理结构(controller) 和逻辑结构(Logic)...

  • 汇图-iOS开发规范

    iOS开发规范 目录 格式与换行 命令 OC编码规范 注释要求 其他 序 此文档根据apple以及行业内比较知名的...

  • 20170317 Guidelines & AppSto

    Guidelines iOS开发规范整理 Objective-C编码规范:26个方面解决iOS开发问题 iOS开发...

  • 3个经常被忽略的iOS编码规范

    对于编程开发来说,编码规范是不可或缺的一个环节。在iOS开发领域,苹果也有官方的编码规范文档:《Coding Gu...

网友评论

      本文标题:iOS 开发文档规范

      本文链接:https://www.haomeiwen.com/subject/tdbmrftx.html