effective objc 阅读笔记:ch1 &ch2

一、熟悉 Objective-C

第1条、了解语言的起源

Objective-C 是一门消息型语言,使用消息结构,而非函数调用。对于消息结构,调用函数由执行代码后的运行环境决定;对于函数调用,则由编译器决定(除非调用函数是多态,才会在运行时根据虚函数表决定具体执行的函数);

Objective-C 是 C 的超集,对于栈上的局部变量,随栈帧的弹出自动清理,对于堆上的对象,按“引用计数”的方式,由内存直接管理;


第2条、在类的头文件中尽量少引入其他头文件

通过“向前声明”的方式,避免在头文件中引入其他头文件,而是在 .m 文件中引入,将引入头文件的时机尽量延后,只在确定要使用时引入,减少类的使用者所需引入的头文件的数量,减少编译时间;该方式的另一个好处是避免头文件之间循环引用(虽然 #import 也可以保证每个头文件只被引用一次,通过 #ifdef )

#import <Foundation/Foundation.h>

@class EOCEmployer;

@interface EOCPerson: NSObject
@property (nonatomic, copy) NSString *firstName;
@property (nonatomic, copy) NSString *lastName;
@property (nonatomic, strong) EOCEmployer *employer;
@end

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

使用字面量语法,与通过 alloc、init 方法声明变量等价,但可以减少代码长度,使其更为易读;

NSString *someString = @"Effective Objective-C";
NSString *someString = [[NSString alloc] initWithString: xxx];

NSNumber *number = [NSNumber numberWithInt:1];
NSNumber *number = @1;

在声明和使用数组时(以 NSArray 为例),直接声明的字面量语法等价于 arrayWithObjects,取下标访问等价于 objectAtIndex,可以视作系统提供的“语法糖”(计算机语言中与另一套语法完全等价但是开发者使用更加方便的语法);

使用字面量语法更加安全,对于 arrayA,arrayB,若 object2 为 nil,那么 arrayWithObjects 会提前结束(该方法会依次处理各个参数,直到发现 nil 为止),而字面量语法会抛出异常,有助于更快发现错误;

NSArray *arrayA = [NSArray arrayWithObjects: object1, object2, object3, nil];
NSArray 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值