一、熟悉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会保留其目标对象

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

  1. 《iOS开发实战 从入门到上架App Store(第2版)》书籍目录

    第1章 开发准备 1.1 iOS 10新特性简述 1.1.1 新增触觉反馈编程接口 1.1.2 SiriKit框架的开放 1.1.3 引入Messages App 1.1.4 通知框架的整合与扩展 1 ...

  2. 【转】 iOS开发之打包上传到App Store——(一)各种证书的理解

    OK,有日子没写iOS开发的相关文章啦,主要是最近的精力都没在这上面,不过既然产品已经快要出来了,就有必要了解一下各种证书啥的(众所周知iOS的一堆证书可是很让人头大呀),最近确实被这个搞得头大,然后 ...

  3. iOS开发从申请账号到上线APP Store步骤

    1.developer.apple.com 申请开发者账号 2.根据API Cloud创建证书: http://docs.apicloud.com/Dev-Guide/iOS-License-Appl ...

  4. iOS开发 点击跳转到App Store 或者 点击按钮去评价

    //跳转到应用页面 NSString *str = [NSString stringWithFormat:@"http://itunes.apple.com/us/app/id%d" ...

  5. iOS 开发之应用内弹出 App Store 应用界面

    在APP内给其他APP做推广,经常用到在应用内弹出应用的APP #import <StoreKit/SKStoreProductViewController.h> 设置代理:<SKS ...

  6. 2018最新苹果APP上架App Store流程(超详细)

    本文转发:https://blog.csdn.net/xxw888/article/details/73618837 2018最新整理iOS app上架app详细教程 上架iOS需要一个付费688的开 ...

  7. iOS开发-UI 从入门到精通(三)

    iOS开发-UI 从入门到精通(三)是对 iOS开发-UI 从入门到精通(一)知识点的综合练习,搭建一个简单地登陆界面,增强实战经验,为以后做开发打下坚实的基础! ※在这里我们还要强调一下,开发环境和 ...

  8. iOS开发-UI 从入门到精通(二)

    iOS开发-UI 从入门到精通(二)是对 iOS开发-UI 从入门到精通(一)知识点的巩固,主要以习题练习为主,增强实战经验,为以后做开发打下坚实的基础! ※开发环境和注意事项: 1.前期iOS-UI ...

  9. iOS开发——实战OC篇&环境搭建之Xib(玩转UINavigationController与UITabBarController)

    iOS开发——实战OC篇&环境搭建之Xib(玩转UINavigationController与UITabBarController)   前面我们介绍了StoryBoard这个新技术,和纯技术 ...

  10. iOS开发——实战OC篇&环境搭建之纯代码(玩转UINavigationController与UITabBarController)

    iOS开发——实战OC篇&环境搭建之纯代码(玩转UINavigationController与UITabBarController)   这里我们就直接上实例: 一:新建一个项目singleV ...

随机推荐

  1. fastjson数据返回配置

    阿里的fastjson 包升级后,可能导致返回的json 数据,字段为null时不显示等问题 <dependency> <groupId>com.alibaba</gro ...

  2. SDNU_ACM_ICPC_2020_Winter_Practice_4th

    H - Triangle   思路:用了斐波那契数列,因为数列中的任意三数都无法组成三角形,所以将1,2,3,,,n变成斐波那契数列就符合条件: #include <iostream> u ...

  3. 【PAT甲级】1080 Graduate Admission (30 分)

    题意: 输入三个正整数N,M,K(N<=40000,M<=100,K<=5)分别表示学生人数,可供报考学校总数,学生可填志愿总数.接着输入一行M个正整数表示从0到M-1每所学校招生人 ...

  4. 5_6 团体队列(UVa540)<queue与STL其他容器的综合运用>

    先给出T个团体,并给出每个团体有多少人和每个人的编号,然后所有团体一起排队,排成一条大队列,排队的原则是,一个成员加入,如果这个成员所在的团体已经有人在排队了,那么他就加到他所在团体的最后面,而不是整 ...

  5. 例题3_1 TeX中的引号(TeX Quotes,UVa 272)

    在TeX中,左双引号是“``”,右双引号是“''”.输入一篇包含双引号的文章,你的任务是把它转换成TeX的格式. 样例输入: "To be or not to be,"quoth ...

  6. L298N模块的使用(文末有惊喜)

    这个模块有两个供电口,标示着“12V输入”的是功率驱动电源输入,供电范围可以是7-46V, 一般12V供电就能满足我们大部分的DIY需求.标示着“5V输出可不接”的是逻辑供电, 当我们将“板载5V输出 ...

  7. 使用Dotfunsctor

    设置Disable Control Flow.Disable Renaming.Disable String Encryption 为no,no为开启该功能 设置加密后输出的路i经 选择需要加密的ex ...

  8. java与以太坊之web3j

    web3j:https://docs.web3j.io/index.html 如何使用Web3j生成私钥和地址,而不只是创建密钥存储JSON文件? https://blog.csdn.net/mong ...

  9. 吴裕雄 python 神经网络——TensorFlow 花瓣分类与迁移学习(2)

    import glob import os.path import numpy as np import tensorflow as tf from tensorflow.python.platfor ...

  10. AOP统一日志打印处理

    在日常开发工作中,我们免不了要打印很多log.而大部分需要输出的log又是重复的(例如传入参数,返回值).因此,通过AOP方式来进行日志管理可以减少很多代码量,也更加优雅. Springboot通过A ...