编写高质量iOS与OS X代码的52个有效方法
第一章重点:
第一条:OC的起源
- OC由smalltalk语言演化而来的语言为消息结构(messaging structure)语言,其运行时所因执行的的代码由运行环境来决定;函数调用(function calling)语言(Java,C++)则由编译器决定。
- 分配在堆中的内存必须直接管理,而分配在栈中的内存用于保存变量的内存则会在其栈帧中弹出时自动清理掉。
- OC将堆内存管理抽象出来。不需要malloc和free来分配或释放对象所占的内存,这一套抽象管理框架叫:引用计数。
- 与预创建结构体相比,创建对象需要额外的开销,例如分配及释放堆内存等。
- OC为C添加了面向对象特性,是其的超集。OC使用动态绑定的消息结构,在运行时才会检查对象类型,接收到一条消息后,究竟应该执行何种代码由运行环境而非编译器来决定。
第二条:在内的头文件中尽量少引入其他有文件
- 除非必要,否则使用@class的方式向前声明体积别的类,并在实现文件中引入那些类的头文件,这样可以尽量降低类之间的耦合(话说没几个人这么做吧)。
- 在无法使用@class进行向前声明时,比如要声明某个类遵循的协议,这种情况下,尽量在这条声明放在“class-continuation分类”中,再不行就将协议单独放在一个头文件中。
第三条:多使用字面字面量语法(语法糖),少用与之等价的方法。
eg: NString *str = @"test"; 而不是:[NSString stringwhith.....];
NSNumber *nb = @2; 而不是:[NSnumber numberWith.....];
NSArray *arr = [obj,obj,obj],而不是[NSArray arrayWhith.....];
- 尽量使用字面量语法创建字符串、数值、字典、数组。与创建此类对象的常规方法,字面量方法创建简明扼要。
- 已通过下标操作来访问数组或,通过key访问字典中对应的value。
- 用字面量创建数组或字典时,若值中有nil,则会抛出异常,引起字面量方法处理数组时,务必保证数组里面的值不为nil。
第四条:多用类型产量,少用#define预处理指令
- 不要用预处理指令定义产量,这样定义出来的常量不含类型信息,编译器知识在编译器只是在编译前据此执行查找与替换操作。即使是有人重新定义常量值,编译器也不会产生警告信息,这将导致应用程序的常量值不一致(这个好像大部分人都不是这样做的)。
- 在实现文件中使用 static const来定义“只在编译单元内可见的产量(translation-unit-specific constant)。由于此产量不在全局符号中,所以无需为名称加前缀。
- 在有文件中使用extern来声明全局变量,并在相关实现文件中定义其值。这种产量要出现在全局符号表中,所以其名称应加以区分,通常与之相关的类名做前缀。
#import <UIKit/UIKit.h> @interface ViewController : UIViewController extern NSString *const DemoStringConstant; @end
#import "ViewController.h" @interface ViewController () @end static const NSTimeInterval kAnimationDuration = 0.3;
NSString *const DemoStringConstant = @"MLCAnimatedViewExtenConstantString"; @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad];
[UIView animateWithDuration:kAnimationDuration animations:^{ }];
NSLog(DemoStringConstant);
}
第五条:用枚举表示状态、选项、状态码
编写高质量iOS与OS X代码的52个有效方法的更多相关文章
- iOS书摘之编写高质量iOS与OS X代码的52个有效方法
来自<Effective Objective-C 2.0编写高质量iOS与OS X代码的52个有效方法>一书的摘要总结 一.熟悉Objective-C 了解Objective-C语言的起源 ...
- 第一章 熟悉Objective -C 编写高质量iOS与OS X代码的52 个有效方法
第一章 熟悉Objective -C 编写高质量iOS与OS X代码的52 个有效方法 第一条: 了解Objective-C 语言的起源 关键区别在于 :使用消息结构的语言,其运行时所应执行 ...
- 笔记 《Effective Objective-C 2.0:编写高质量iOS与OS X代码的52个有效方法 》
阅读此书的笔记点: 此书目录即是对知识点最好的总结 第1章 熟悉Objective-C ---------------------------------------------- 第1条:了解Obj ...
- 【读书笔记】--《编写高质量iOS与OS X代码的52个有效方法》
1.Objective-C 起源: 在 C 语言基础上添加了面向对象特性,是 C 语言的超集.Objective-C 由 SmallTalk 语言演变过来,使用消息结构,运行环境由运行环境决定. OC ...
- 《编写高质量iOS与OS X代码的52个有效方法》书籍目录
一.熟悉Objective-C 1.了解Objective-C语言的起源 2.在类的头文件中尽量少引入其他头文件 3.多用字面量语法,少用与之等价的方法 4.多用类型常量,少用#define预处理指令 ...
- 编写高质量iOS代码与OS X代码的effective 方法小结
一.熟悉OC: 了解OC的起源: OC和C++,Java等面向对象语言类似,不过有很方面差别.因为该语言使用 消息结构而非函数调用. 消息结构和函数调用的区别:前者是在其运行时所应执行的代码由运行环 ...
- 编写高质量iOS代码与OS X代码的effective方法(小结)
一.熟悉OC: 了解OC的起源: OC和C++,Java等面向对象语言类似,不过有很方面差别.因为该语言使用 消息结构而非函数调用. 消息结构和函数调用的区别:前者是在其运行时所应执行的代码由运行环 ...
- 编写高质量iOS代码的52个有效方法2-1
一.变量的定义位置(用{}声明示例变量或者用@property属性声明实例变量) 1.用{}声明示例变量: 此方法生命的实例变量,编译器在编译时,会自动计算其偏移量(表示该变量距离存放对象的内存区域的 ...
- 编写高质量iOS代码的52个有效方法1-1
一.使用向前声明(@class)的好处 1.有效减少编译器编译的时间: 2.有效避免循环引用: 二.字面量语法的好处 1.字面常量 精简.可用于所有数据类型,如: NSNumber *intNumbe ...
随机推荐
- 搭建http静态网页服务器出现“Forbidden You don't have permission to access / on this server”
部分参考链接: 2.4+ httpd最简单example.conf, 存放目录:/etc/httpd/conf.d/example.conf Alias /newstart-zte/ "/n ...
- 在tableviewcell里面嵌入switch控件以及如何获取switch控件数据
主要是通过cell.accessoryView来添加switch控件- (UITableViewCell *)tableView:(UITableView *)tableView cellForRow ...
- django数据库多对多修改对应关系
obj = models.Book.objects.get(id=1) #添加对应关系,给书添加作者# obj.m.add(3)# obj.m.add(2,4)# obj.m.add(*[1,2,3, ...
- mybatis学习二 全局配置文件常用配置
全局配置文件的详细解析可以参考mybatis的中文参考文档 1.全局配置文件中内容1.1 <transactionManager/> type 属性可取值1.1.1 JDBC,事务管理使用 ...
- mysql 5.7 linux环境下解压安装
在CentOS linux环境安装mysql 一般rpm(或者yum),预编译和源码安装. 如果采用rpm或者yum安装,mysql的数据文件一般存放在/var/lib/mysql目录下,也就是会把d ...
- AJAX-php-json数组
1.在php中有个数组,响应回前端 $array=["习大大","川普","金三胖"];2.JS对象数据格式 ex: 数组: var TOM ...
- Django+Uwsgi+Nginx项目部署文档
一.基本环境搭建 1)查看服务器 [root@Myjumpserver ~]# cat /etc/sysconfig/selinux SELINUX=disabled SELINUXTYPE=targ ...
- day10作业—(闭包迭代器递归)
补充:一个星号的 打散和聚合 a, b , *c = [1,2, 1,4] print( a , b , *c) #1 2 1 4 print(a, b, c) #1 2 [1, 4] *c , = ...
- docker 加速器配置目录
centos 7 : /lib/systemd/system/docker.service
- Our Future
The world is betting on how to win the football game: But I'm betting on how to win your heart: Mayb ...