美文网首页
第三章:接口与API设计

第三章:接口与API设计

作者: LucXion | 来源:发表于2016-11-04 19:37 被阅读0次
  • 技巧十二:用前缀避免命名空间冲突

注意:
Apple宣称其保留使用所有两字母前缀的权利,所以用户自定义的前缀应该至少有三个字母
不仅是类名,应用程序中的所有名称都应该加前缀,特别是分类和分类中的方法
在类的实现文件中使用纯C函数或者全局变量要注意,因为在编译好的文件当中,这些名称是要算作顶级符号的“top-level symbol”的,在使用过程中,如果在外部文件定义了同名的函数或者变量,会提示命名冲突。
如果自己开发的库内使用到了第三方库,应该为这个第三方库重命名避免冲突。

  • 技巧十三:提供全能初始化方法

在指定的初始化方法中一定要维系超类的调用链条[super init], 重写其他的外部可调用的方法,设置默认值
注意:
如果父类拥有全能初始化方法,那么子类维系超类调用链条的方法应该是父类的全能初始化方法, 但如果方法名不同,那么还需要重写父类全能初始化方法名相同的方法,内部调用子类真实的全能初始化方法
也有一种条件,就是我们不希望父类全能初始化方法能应用于子类,那么直接重写并抛出异常

@throw [NSException exceptionWithName:NSInternalInconsistencyException reason:@"should not do thie" userInfo:nil];
  • 技巧十四:实现description方法
-(NSString*)description  返回的字符串为打印信息
-(NSString*)debugDescription  返回的字符串为调试打印信息(po)
  • 技巧十五: 方法命名
  1. 如果方法的返回值是新建的,那么方法的首个字母应该是返回值类型,而且不要写简称
  2. 应该把表示参数类型的名词放在参数前面
  3. 如果方法要在当前对象上执行操作,那么就应该包含动词
  4. BOOL属性应该加is前缀,如果返回值为BOOL,应该根据功能加has或者is前缀
  • 技巧十六:类与协议的命名

起名时应遵从标准的OC规范(类名的前缀固定,后缀要体现类型且不能缩写)
言简意赅,读起来跟生活中的用语相近
确保风格与框架相符

  • 技巧十七: 给类的私有方法加前缀

注意:
p_为前缀,_单独下滑线的前缀留给apple

  • 技巧十八: 理解OC错误模型

如果抛出异常,那么在作用于末位本来需要释放的对象就不会自动释放了,简单来说,就是引用计数(ARC)不是异常安全的,如果要写出异常安全的代码,可以通过设置编译器的标志来实现,这将引入额外代码,即便不抛出异常时也要运行,打开编译器的标志是-fobjc-arc-excetions

OC现在采用的方法是:只在极其罕见的情况下抛出异常,异常抛出后无需考虑恢复的问题,而且应用程序退出,不需要再编写复杂的“异常安全”的代码。对于不是那么严重的错误(nonfatal error),令方法返回nil、0,或者通过NSError返回错误信息
NSError 通过输出参数 传递回调用者, 传递(**NSError),可以解引用,编译器会编译进自动缓存池
一般通过code来辨别位置

  • 技巧十九: NSCopying协议

需要一个类能够实现copy,那么需要遵守NSCopying协议,并且重写一下方法:

-(id)copyWithZone:(NSZone *)zone{
    //全能初始化方法
    People *copyPeople = [[[self class] allocWithZone:zone] init];
    //赋值私有变量(不可变数组不需要深拷贝,可变数组不进行深拷贝就会指向同一片内存区域)
    copyPeople->_friends = [_friends mutableCopy];
    return copyPeople;
}

相关文章

网友评论

      本文标题:第三章:接口与API设计

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