基本篇
代码是否工作?是否执行其预定功能,逻辑是否正确等。
是所有的代码很容易理解?可读性检查,变量名,magic code,方法长度等。
它是否符合你的同意编码约定?这些通常会包括括号,变量和函数名,格式化和注释以及标注位置。
是否有任何多余的或重复的代码?
是否代码尽可能模块化?
是否可用全局变量来代替某些变量?
是否有任何注释掉的代码?费代码需要清理掉。
是否循环体有正确的终止条件?[……]
- 数据类型安全篇
- 数组操作
- + (instancetype)arrayWithObject:(id)anObject
- 数组操作
此处参数应该判空,传入nil会引起崩溃
- – (id)objectAtIndex:(NSUInteger)index;
调用此方法前要先判断是否超过了数据的元素个数,否则会越界崩溃
- – (NSArray *)arrayByAddingObject:(id)anObject;
调用此方式时传入参数应该判空,传入nil会引起崩溃
- NSMutableArray – (void)addObject:(id)an[……]
在使用源代码版本控制工具时,最佳实践是一直保持一个主干版本。但是为了应付实际开发中的各种情况,适时的开辟一些分支也是很有必要的。比如在持续开发新功能的同时,需要发布一个新版本,那么就需要从开发主干中建立一个用于发布的分支,在分支上进行bug fix,维护版本的稳定,并适时的将一些改动合并回主干。目前大红大紫的源代码版本控制工具git很受大家推崇,原因之一就是其在这方面的功能相当强大。其实老牌的SVN也是有这样的功能的,接下来就给大家讲解下。
Branch的创建
在SVN中主干代码一般是放置在Trunk目录下的,如果要新建Branch的话则放置在Branchs目录下。(注意这[……]
最近一个朋友在做iOS视频解码,想要采用开源框架FFMPEG,但是环境配置就卡住了,真正配置起来也挺花时间的。今天就开贴记录一下我的配置步骤,希望以后配置的人能够省点时间。
配置环境:
OSX10.10.4DP XCode6.3.2 iOS8.3SDK
第一步,下载FFMpeg源码,我这里的版本是2.6.3
https://github.com/FFmpeg/FFmpeg
第二步,配置编译脚本,对于新手来说写shell脚本再调试挺麻烦的,这里提供一个git上大神写好的脚本,类似傻瓜式操作
https://github.com/kewlbear/FFmpeg-iO[……]
创建队列
要使用用户队列,我们首先得创建一个。调用函数dispatch_queue_create就行了。函数的第一个参数是一个标签,这纯是为了debug。Apple建议我们使用倒置域名来命名队列,比如“com.dreamingwish.subsystem.task”。这些名字会在崩溃日志中被显示出来,也可以被调试器调用,这在调试中会很有用。第二个参数目前还不支持,传入NULL就行了。
提交 Job
向一个队列提交Job很简单:调用dispatch_async函数,传入一个队列和一个block。队列会在轮到这个block执行时执行这个block的代码。下面的例子是一个在后台执行[……]
以下是开发初期收集整理的一点资料
多线程之NSInvocationOperation
多线程编程是防止主线程堵塞,增加运行效率等等的最佳方法。而原始的多线程方法存在很多的毛病,包括线程锁死等。在Cocoa中,Apple提供了NSOperation这个类,提供了一个优秀的多线程编程方法。
本次介绍NSOperation的子集,简易方法的NSInvocationOperation:
@implementation MyCustomClass
– (void)launchTaskWithData:(id)data
{
//创建一个NSInvocationOperation对象,并初[……]