基本篇

 

代码是否工作?是否执行其预定功能,逻辑是否正确等。

 

是所有的代码很容易理解?可读性检查,变量名,magic code,方法长度等。

 

它是否符合你的同意编码约定?这些通常会包括括号,变量和函数名,格式化和注释以及标注位置。

 

是否有任何多余的或重复的代码?

 

是否代码尽可能模块化?

 

是否可用全局变量来代替某些变量?

 

是否有任何注释掉的代码?费代码需要清理掉。

 

是否循环体有正确的终止条件?[……]

继续阅读

  1. 数据类型安全篇
    • 数组操作
      1. + (instancetype)arrayWithObject:(id)anObject

此处参数应该判空,传入nil会引起崩溃

  1. – (id)objectAtIndex:(NSUInteger)index;

调用此方法前要先判断是否超过了数据的元素个数,否则会越界崩溃

  • – (NSArray *)arrayByAddingObject:(id)anObject;

调用此方式时传入参数应该判空,传入nil会引起崩溃

  1. 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对象,并初[……]

继续阅读