美文网首页iOS 开发 iOS Developer
第一章 熟悉Objective-C(EffectiveObjec

第一章 熟悉Objective-C(EffectiveObjec

作者: 谁动了MyWorld | 来源:发表于2016-06-20 21:30 被阅读71次

1.在类的头文件中尽量少引入其他头文件

a.多使用向前声明@class

b.无法使用向前声明的(比如某个类需要遵循一项协议),可以使用分类

2.多使用字面量语法,少用与之等价的方法

优点:简单,易理解,减少代码出错率(如果值为nil会报异常)

3.多用类型常量, 少用#define预处理指令

#define ANIMATION_DURATION 0.3

缺点:1>没有类型提示, 2>如果放在头文件,所以包含该头文件的 文件都会执行替换

static const NSTimeInterval kAnimationDuration = 0.3

注:常量命名如果局限与某个实现文件用k开头,  若常量在类之外可见,则通常用类名为前缀

只是编译单元之内用,放在.m     如果其他被import的类也要使用,放在.h

类似通知名这类字符串,也可定义为常量

//In the header file 声明

extern NSString *const EOCStringConstant; //EOCStringConstant是常量, 这个常量是个指针,指向NSString对象

//In the implementation file 实现

NSString *const EOCStringConstant = @"VALUE";

注意:在使用extern的时候,常量名要使用类名作为前缀, UIKit就是按照这种方式来命名的,如UIApplicationDidEnterxxx

extern 编译器看到extern关键字,就能明白如何在此类头文件的代码中处理该常量了

.这个关键字是要告诉编译器,在全局符号表中将会有一个名叫EOCStringConstant的符号

也就是说,编译器无需查看定义,即允许代码使用此常量,因为它知道,当链接成二进制文件后,肯定能找到该常量

编译后,会在"数据段data section"为字符串分配存储空间

const 常量,不可修改.  注意const的位置,  常量定义应从右->左解读

static 只限编译单元可用

4.用枚举标识状态,选项,状态码

typedefNS_ENUM(NSUInteger,EOCConnectionState) {

EOCConnectionStateDisconnected,

EOCConnectionStateConnecting,

EOCConnectionStateConnected

};

typedefNS_OPTIONS(NSUInteger, EOCPermittedDirection) {

EOCPermittedDirectionLeft =1<<0,

EOCPermittedDirectionDown =1<<1,

EOCPermittedDirectionRight=1<<2,

EOCPermittedDirectionUp  =1<<3

};

相关文章

网友评论

    本文标题:第一章 熟悉Objective-C(EffectiveObjec

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