Effective Objective-C 2.0 学习笔记

第3条:多用字面量语法,少用与之等价的方法

字面量语法:
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方法中,总是应该直接通过实例变量来读写数据。
有时会使用惰性初始化技术配置某份数据,这种情况下,需要通过属性来读取数据。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值