当前位置: 首页 > news >正文

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

一、熟悉Objective-C

1、了解Objective-C语言的起源

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

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

4、多用类型常量,少用#define预处理指令

5、用枚举值表示状态、选项、状态码

二、对象、消息、运行期

6、理解“属性”这一概念

7、在对象内部尽量直接访问实例变量

8、理解“对象等同性”这一概念

9、以“类族模式”隐藏实现细节

10、在既有类中使用关联对象存放自定义数据

11、理解objc_msgSend的作用

12、理解消息转发机制

13、用“方法调配技术”调试“黑盒方法”

14、理解“类对象”的用意

三、接口与API设计

15、用前缀避免命名空间冲突

16、提供“全能初始化方法”

17、实现description方法

18、尽量使用不可变对象

19、使用清晰而协调的命名方式

20、为私有方法名加前缀

21、理解Objective-C错误模型

22、理解NSCopying协议

四、协议与分类

23、通过委托与数据源协议进行对象间通信

24、将类的实现代码分散到便于管理的数个分类之中

25、总是为第三方类的分类名称加前缀

26、勿在分类中声明属性

27、使用“class-continuation”分类隐藏实现细节

28、通过协议提供匿名对象

五、内存管理

29、理解引用计数

30、以ARC简化引用计数

31、在dealloc方法中只释放引用并解除监听

32、编写“异常安全代码”时留意内存管理问题

33、以弱引用避免保留环

34、以“自动释放池块”降低内存峰值

35、用“僵尸对象”调试内存管理问题

36、不要使用retainCount

六、块与大中枢派发

37、理解“块”这一概念

38、为常用的块类型创建typedef

39、用handler块降低代码分散程度

40、用块引用其所属对象时不要出现保留环

41、多用派发队列,少用同步锁

42、多用GCD,少用performSelector系统方法

43、掌握GCD及操作队列的使用时机

44、通过Dispatch Group机制,根据系统资源状况来执行任务

45、使用dispatch_once来执行只需运行一次的线程安全代码

46、不要使用dispatch_get_current_queue

七、系统框架

47、熟悉系统框架

48、多用块枚举,少用for循环

49、对自定义其内存管理语义的collection使用无缝桥接

50、构建缓存时选用NSCache而非NSDictionary

51、精简initialize与load的实现代码

52、别忘了NSTimer会保留其目标对象

转载于:https://www.cnblogs.com/cchHers/p/9013140.html

相关文章:

  • HDU4522 湫湫系列故事——过年回家
  • redis视频地址
  • c#中使程序跳到指定行中
  • 奶牛问题
  • 理解MapReduce计算构架
  • 腾讯云SSL证书管理
  • 清除浮动最有效的css写法
  • 基于Docker搭建MySQL主从复制
  • 脑洞篇之我们生活在9维世界
  • Python time 的应用
  • 【剑指offer】面试题 2. 实现 Singleton 模式
  • Go-变量-var
  • 复习mysql
  • 【转载】C/C++内存对齐
  • linux运维、架构之路-MHA高可用方案
  • #Java异常处理
  • 2019.2.20 c++ 知识梳理
  • Angular 响应式表单 基础例子
  • canvas 五子棋游戏
  • exports和module.exports
  • JavaScript设计模式与开发实践系列之策略模式
  • linux学习笔记
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • SQLServer之索引简介
  • 关于使用markdown的方法(引自CSDN教程)
  • 好的网址,关于.net 4.0 ,vs 2010
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 入口文件开始,分析Vue源码实现
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 微服务核心架构梳理
  • 微服务框架lagom
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • ​虚拟化系列介绍(十)
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • #AngularJS#$sce.trustAsResourceUrl
  • #QT(TCP网络编程-服务端)
  • $.proxy和$.extend
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (06)金属布线——为半导体注入生命的连接
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (ros//EnvironmentVariables)ros环境变量
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (一)基于IDEA的JAVA基础1
  • (转)http协议
  • (转)JAVA中的堆栈
  • (转载)Linux网络编程入门
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • ***利用Ms05002溢出找“肉鸡
  • .net 验证控件和javaScript的冲突问题
  • .Net 知识杂记