zoukankan      html  css  js  c++  java
  • Effective Objective-C 2.0读书笔记(四)

    第19条,使用清晰而协调的命名方式

    • 起名时应遵从标准的 Objective-C 命名规范,这样创建出来的接口更容易为开发者所理解。
    • 方法名要言简意赅,从左至右读起来要像个日常用语中的句子才好。
    • 方法名里不要使用缩略后的类型名称。
    • 给方法起名时的第一要务就是确保其风格与你自己的代码或所要集成的框架相符。

    关键词:命名方式

    第20条,为私有方法名加前缀

    • 给私有方法的名称加上前缀,这样可以很容易将其同公共方法区分开。
    • 不要单用一个下划线做私有方法的前缀,因为这种做法是预留给苹果公司用的。

    关键词:私有方法命名

    第21条,理解 Objective-C 错误模型

    • 只有发生了可使整个应用程序崩溃的严重错误时,才应使用异常。
    • 在错误不那么严重的情况下,可以指派“委托方法”(delegate method)来处理错误,也可以把错误信息放在 NSError 对象里,经由“输出参数”返回给调用者。

    关键词:异常处理、NSError

    第22条,理解 NSCopying 协议

    • 若想令自己所写的对象具有拷贝功能,则需要实现 NSCopying 协议。
    • 如果自定义的对象分为可变版本与不可变版本,那么就要同时实现 NSCopying 与 NSMutableCopying 协议。
    • 复制对象时需要决定采用浅拷贝还是深拷贝,一般情况下应该尽量执行浅拷贝。
    • 如果你所写的对象需要深拷贝,那么可以考虑新增一个专门执行深拷贝的方法。

    关键词:NSCopying协议、浅拷贝、深拷贝

    第23条,通过委托与数据源协议进行对象间通信

    • 委托的理解:从人的属性上理解就是将一件自己做的事托付给另一个人做,在OC的类中类似:假如一个类可以做很专业的事(付费),它对外出口专业服务(发起支付函数),这个对外业务就定义成一个协议,叫委托,现在另一个类中没有专业能力(支付能力),于是就需要引进专业能力,恰好有这么一个类有这种能力,但是需要遵守那个类定的规矩(协议),那么,作为另一个类,需要这种能力,但自身又没有,只能“委托”有这种能力的类来做成这件事情。 为了将这种现象普适化,适用更多类似情况,于是在类的世界里,有个叫“委托”的协议就是包办这种事情的。既然委托包办,在包办的过程中需要沟通(参数),那么顺带又把这种沟通方式定义为一种类之间的通信方式。
    • OC的协议(protocol)类比于Java的接口(interface)。
    • OC不支持多继承,但是有协议和分类弥补多继承所拥有的功能。
    • 委托模式主旨:定义一套接口,某对象若想接受另一个对象的委托,则需遵从此接口,以便成为其“委托对象”。
    • 委托协议中的方法一般都是可选的(optional)。
    • 将委托对象应该支持的接口定义成协议,在协议中把可能需要处理的事件定义成方法。
    • 当某对象需要另外一个对象中获取数据时,可以使用委托模式。这种情境下,该模式亦称“数据源协议”(data source protocal)。
    • 若有必要,可实现含有段位的结构体,将委托对象是否能响应相关协议方法这一信息缓存至其中。

    关键词:委托、数据源协议

    第24条,将类的实现代码分散到便于管理的数个分类之中

    • 防止类中功能过多,文件越来越大,易于管理,提出分类概念。
    • 分类中只能覆写主类的方法和新增方法,但是不能新增属性(实在要加,从技术上可行,但是需要自己先@dynamic 声明属性,再关联对象写set/get方法,容易导致内存管理出错)。
    • 使用分类机制把类的实现代码划分成易于管理的小块。
    • 将应该视为“私有”的方法归入名叫 Private 分类中,以隐藏实现细节。

    关键词:分类机制、类的实现

  • 相关阅读:
    poj2492A Bug's Life
    poj2912Rochambeau
    poj1062昂贵的聘礼
    poj3169Layout(差分约束)
    poj2240Arbitrage
    poj1502MPI Maelstrom
    poj3259Wormholes
    1/8=1/a+1/b,a,b为自然数
    目录查找
    待删除未删除 问题解决
  • 原文地址:https://www.cnblogs.com/akiha/p/13267871.html
Copyright © 2011-2022 走看看