Effective Objective-C 2.0 学习笔记
2015-09-29 22:33
405 查看
第3条:多用字面量语法,少用与之等价的方法
第4条:多用类型常量,少用#define预处理指令
编译单元内的常量,命名规则为变量名前加k
全局常量,命名规则为变量名前加类名
第5条:用枚举表示状态、选项、状态码
在处理枚举类型的switch语句中不要实现default分支。这样的话,加入新枚举之后,编译器就会提示开发者:switch语句并未处理所有枚举。
第7条:在对象内部尽量直接访问实例变量
在对象内部读取数据时,应该直接通过实例变量来读,而写入数据时,则应通过属性来写。
在初始化方法及dealloc方法中,总是应该直接通过实例变量来读写数据。
有时会使用惰性初始化技术配置某份数据,这种情况下,需要通过属性来读取数据。
字面量语法: NSNumber *intNumber = @1; NSNumber *floatNumber = @2.5f; NSNumber *doubleNumber = @3.14159; NSNumber *boolNumber = @YES; NSNumber *charNumber = @'a';
字面量语法也适用于下述表达式: int x = 5; float y = 6.32f; NSNumber *expressionNumber = @(x * y);
字面量数组,用字面量语法创建数组时要注意,若数组元素对象中有nil,则会抛出异常 NSArray *animals = @[@"cat", @"dog", @"mouse", @"badger"]; NSString *dog = animals[1];
字面量字典 NSDictionary *personData = @{@"firstName" : @"Matt", @"lastName" : @"Galloway", @"age" : @28}; NSString *lastName = personData[@"lastName"];
可变数组与字典,用下标写数据,则是: mutableArray[1] = @"dog"; mutableDictionary[@"lastName"] = @"Galloway";
用字面量创建可变数组与字典 NSMutableArray *mutable = [@[@1, @2, @3, @4, @5]mutableCopy];
第4条:多用类型常量,少用#define预处理指令
编译单元内的常量,命名规则为变量名前加k
// 实现文件 static const NSTimeInterval kAnimationDuration = 2.25f; static NSString *const kConstant = @"VALUE";
全局常量,命名规则为变量名前加类名
// 头文件 extern NSString *const EOCStringConstant; extern const NSTimeInterval EOCAnimatedViewAnimationDuration; // 实现文件 NSString *const EOCStringConstant = @"VALUE"; const NSTimeInterval EOCAnimatedViewAnimationDuration = 0.3;
第5条:用枚举表示状态、选项、状态码
typedef NS_ENUM(NSInteger, RTSex) { RTSexMan, RTSexWoman };
在处理枚举类型的switch语句中不要实现default分支。这样的话,加入新枚举之后,编译器就会提示开发者:switch语句并未处理所有枚举。
第7条:在对象内部尽量直接访问实例变量
在对象内部读取数据时,应该直接通过实例变量来读,而写入数据时,则应通过属性来写。
在初始化方法及dealloc方法中,总是应该直接通过实例变量来读写数据。
有时会使用惰性初始化技术配置某份数据,这种情况下,需要通过属性来读取数据。
相关文章推荐
- JSONObject 好坑啊
- 禅与 Objective-C 编程艺术(Zen and the Art of the Objective-C Craftsmanship)
- 使用字典和数组的嵌套实现通讯录
- objective-c中@property的参数分别有何作用?
- No object in the CompoundRoot has a publicly accessible property named
- Object.toString()
- 【IOS 开发学习总结-OC-23】★objective-c的反射机制
- 自定义构造方法
- 重写构造方法
- 响应有参方法
- Java中Object转化为int类型
- A different object with the same identifier value was already associated wit
- 判断对象能否响应指定的方法
- 动态类型的检测
- 传统的get和set方法
- SEL的使用
- NSUserDefaults数据保存报错:Attempt to set a non-property-list object...
- 类对象的使用
- 类的本质
- 多态的实现