iPhone开发工具介绍与应用 (下篇)
iPhone开发工具介绍与应用是本文要介绍的内容,分为上下节为友们介绍,继续 iPhone开发工具介绍与应用 (上篇)开始介绍。来看本文详细内容。
iPhone开发工具之Accessorizer自动化生成代码的工具
Accessorizer 是一款自动化代码的工具,可以为你自动生成 property,Keyed Archiving 等定型的代码,省去了我们不少开发的时间,如图:
使用方法在作者的站点上有video演示,可以了解更多,这里只介绍一些基本的使用方法。
首先设置自己的编码风格
启动 Accessorizer
双击 Xcode 中 @interface 的大括号,选择实例
按下 Cmd+1
自动弹出 Accessorizer ,点击 Cmd+TAB 退回到 Xcode
代码已经自动拷贝到剪切板,粘贴到合适的地方
iPhone开发工具使用之Clang静态解析Objective-C程序
这一回介绍一下 clang,一个用来静态解析程序的工具。
clang 是 LLVM 编译器项目中的其中之一。LLVM 支持 C/C++/Objective-C 语言,并有许多 Apple 的工程师加入这个项目。
静态解析程序
静态解析是指不用执行程序,而是从程序的代码构成来分析错误和预测问题。比如Java中的FindBugs,C++中的prefast等。通过这些工具可以一定程度的减少程序中的错误数量。
一般静态解析,分析以下几类问题:
代码形式,名称是否违规
警告容易出错的代码
警告程序运行时可能出现问题的代码
比如容易引起内存泄漏的代码,会被其检测出,提示你修正。
用clang来解析iPhone程序
安装
在 这里 下载 clang, 并解压拷贝所有目录/文件到下面的目录,并设置该目录到PATH。
/usr/local/bin
下面是一些基本命令的说明
scan-build 解析使用的命令
ccc-analyzer gcc的实例
clang 解析时执行,也可作为编译器使用
sortedtable.js 解析报告的表示用JavaScript代码
使用方法很简单,比如像下面:
% cd MyProj % scan-build xcodebuild
当然,你也可以使用参数:
% scan-build -o ./check --view xcodebuild -configuration Development : * * BUILD SUCCEEDED * * scan-build: 1 bugs found. Viewing analysis results: './check/2010-04-11-2/index.html'
"-o" 是指定输出报告的位置(缺省是/tmp),"—view"是指解析完成后用浏览器打开报告。编译器 xcodebuild 的参数不变。
报告结果如下图所示:
每次解析完成后,最好用下面的命令删除编译的结果,要不然会出问题。
xcodebuild clean
如果是比较新的 Xcode 版本, clang 已经集成到 Xcode 里了,可以通过项目设置中的 build --> 执行静态解析 来自动完成解析的过程。
iPhone开发工具之使用Afconvert转换WAV文件
程序中经常使用 .WAV 的音效文件,虽然可以直接使用它,但是最好转换为 apple 推荐的 .CAF 格式。
这个时候我们就可以使用 afconvert 命令。其基本的语法如下:
用 -d 指定频率格式
{ -d | --data } data_format[@sample_rate_hz] [/format_flags] [#frames_per_packet] : [-][BE|LE]{F|[U]I}{8|16|24|32|64} (PCM) e.g. BEI16 F32@44100 or a data format appropriate to file format
可以指定的 .WAV 文件格式有以下5种:
UI8 LEI16 LEI24 LEI32 LEF32 如 -d LEI16@22050 就代表 16位 22050Hz。
另外可以用 -c 指定声道。用 -f 指定格式。比如:
$afconvert -f WAVE -d LEI16@22050 -c destinate file >
比如改变当前目录及子目录下的 .wav 文件格式,如下命令:
$find . -name '*.wav' -exec afconvert -f WAVE -d LEI16@22050 -c 1 {} /;
如果要转换为用 ima4 压缩的 .caf 文件则用下面的命令:
$find . -name '*.wav' -exec afconvert -f caff -d ima4 {} /;
其中支持的格式如下所示: