第一章重点:

第一条:OC的起源

  1. OC由smalltalk语言演化而来的语言为消息结构(messaging structure)语言,其运行时所因执行的的代码由运行环境来决定;函数调用(function calling)语言(Java,C++)则由编译器决定。
  2. 分配在堆中的内存必须直接管理,而分配在栈中的内存用于保存变量的内存则会在其栈帧中弹出时自动清理掉。
  3. OC将堆内存管理抽象出来。不需要malloc和free来分配或释放对象所占的内存,这一套抽象管理框架叫:引用计数。
  4. 与预创建结构体相比,创建对象需要额外的开销,例如分配及释放堆内存等。
  5. OC为C添加了面向对象特性,是其的超集。OC使用动态绑定的消息结构,在运行时才会检查对象类型,接收到一条消息后,究竟应该执行何种代码由运行环境而非编译器来决定。

第二条:在内的头文件中尽量少引入其他有文件

  1. 除非必要,否则使用@class的方式向前声明体积别的类,并在实现文件中引入那些类的头文件,这样可以尽量降低类之间的耦合(话说没几个人这么做吧)。
  2. 在无法使用@class进行向前声明时,比如要声明某个类遵循的协议,这种情况下,尽量在这条声明放在“class-continuation分类”中,再不行就将协议单独放在一个头文件中。

第三条:多使用字面字面量语法(语法糖),少用与之等价的方法。

eg: NString *str = @"test"; 而不是:[NSString stringwhith.....];

NSNumber *nb = @2;  而不是:[NSnumber numberWith.....];

   NSArray *arr = [obj,obj,obj],而不是[NSArray arrayWhith.....];

  1. 尽量使用字面量语法创建字符串、数值、字典、数组。与创建此类对象的常规方法,字面量方法创建简明扼要。
  2. 已通过下标操作来访问数组或,通过key访问字典中对应的value。
  3. 用字面量创建数组或字典时,若值中有nil,则会抛出异常,引起字面量方法处理数组时,务必保证数组里面的值不为nil。

 

 第四条:多用类型产量,少用#define预处理指令

  1. 不要用预处理指令定义产量,这样定义出来的常量不含类型信息,编译器知识在编译器只是在编译前据此执行查找与替换操作。即使是有人重新定义常量值,编译器也不会产生警告信息,这将导致应用程序的常量值不一致(这个好像大部分人都不是这样做的)。
  2. 在实现文件中使用 static const来定义“只在编译单元内可见的产量(translation-unit-specific constant)。由于此产量不在全局符号中,所以无需为名称加前缀。
  3. 在有文件中使用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个有效方法的更多相关文章

  1. iOS书摘之编写高质量iOS与OS X代码的52个有效方法

    来自<Effective Objective-C 2.0编写高质量iOS与OS X代码的52个有效方法>一书的摘要总结 一.熟悉Objective-C 了解Objective-C语言的起源 ...

  2. 第一章 熟悉Objective -C 编写高质量iOS与OS X代码的52 个有效方法

    第一章 熟悉Objective -C   编写高质量iOS与OS  X代码的52 个有效方法   第一条: 了解Objective-C 语言的起源 关键区别在于 :使用消息结构的语言,其运行时所应执行 ...

  3. 笔记 《Effective Objective-C 2.0:编写高质量iOS与OS X代码的52个有效方法 》

    阅读此书的笔记点: 此书目录即是对知识点最好的总结 第1章 熟悉Objective-C ---------------------------------------------- 第1条:了解Obj ...

  4. 【读书笔记】--《编写高质量iOS与OS X代码的52个有效方法》

    1.Objective-C 起源: 在 C 语言基础上添加了面向对象特性,是 C 语言的超集.Objective-C 由 SmallTalk 语言演变过来,使用消息结构,运行环境由运行环境决定. OC ...

  5. 《编写高质量iOS与OS X代码的52个有效方法》书籍目录

    一.熟悉Objective-C 1.了解Objective-C语言的起源 2.在类的头文件中尽量少引入其他头文件 3.多用字面量语法,少用与之等价的方法 4.多用类型常量,少用#define预处理指令 ...

  6. 编写高质量iOS代码与OS X代码的effective 方法小结

    一.熟悉OC: 了解OC的起源: OC和C++,Java等面向对象语言类似,不过有很方面差别.因为该语言使用  消息结构而非函数调用. 消息结构和函数调用的区别:前者是在其运行时所应执行的代码由运行环 ...

  7. 编写高质量iOS代码与OS X代码的effective方法(小结)

    一.熟悉OC: 了解OC的起源: OC和C++,Java等面向对象语言类似,不过有很方面差别.因为该语言使用  消息结构而非函数调用. 消息结构和函数调用的区别:前者是在其运行时所应执行的代码由运行环 ...

  8. 编写高质量iOS代码的52个有效方法2-1

    一.变量的定义位置(用{}声明示例变量或者用@property属性声明实例变量) 1.用{}声明示例变量: 此方法生命的实例变量,编译器在编译时,会自动计算其偏移量(表示该变量距离存放对象的内存区域的 ...

  9. 编写高质量iOS代码的52个有效方法1-1

    一.使用向前声明(@class)的好处 1.有效减少编译器编译的时间: 2.有效避免循环引用: 二.字面量语法的好处 1.字面常量 精简.可用于所有数据类型,如: NSNumber *intNumbe ...

随机推荐

  1. POJ 3621Sightseeing Cows 0/1 分数规划

    Description 作为对奶牛们辛勤工作的回报,Farmer John决定带她们去附近的大城市玩一天.旅行的前夜,奶牛们在兴奋地 讨论如何最好地享受这难得的闲暇. 很幸运地,奶牛们找到了一张详细的 ...

  2. NC 6系分配组织方法

    分配客户的方法 String[] customer = { cuVO.getPk_customer() }; ICustAssignService cs = NCLocator.getInstance ...

  3. html里<div> <br /> <p>三者区别

    一.语法不同   -   TOP div和p是成对组合闭合标签:<br />是单一的闭合标签. 以<div>开始,</div>结束:以<p>开始,< ...

  4. Netty 源码 NioEventLoop(三)执行流程

    Netty 源码 NioEventLoop(三)执行流程 Netty 系列目录(https://www.cnblogs.com/binarylei/p/10117436.html) 上文提到在启动 N ...

  5. .core 学习文档

    https://docs.microsoft.com/zh-cn/aspnet/core/razor-pages/?view=aspnetcore-2.1&tabs=visual-studio

  6. Maximum Average Subarray I LT643

    Given an array consisting of n integers, find the contiguous subarray of given length k that has the ...

  7. robot framework 中should be true 与should contain 的区别

    should be true  是否等于:判断是否should contain  是否包含 a是否包含b

  8. hbase 单机版安装

    1.安装jdk参见http://www.cnblogs.com/lvlv/p/4337863.html 安装路径:/usr/java/jdk1.7.0_79 2.下载hbase   http://mi ...

  9. mysql主从配置思路

    记录一下 原文:http://www.rjfw.com.cn/qamain/prevView.action?id=40482017200000031 mysql主从配置(清晰的思路) mysql主从配 ...

  10. PHP字符串转实体函数

    与HTML实体相关的函数 htmlspecialchars函数 描述:预定义的字符转换为HTML实体 语法:string htmlspecialchars(string $string [,int $ ...