My TextExpander Snippets for Cocoa

分享一组我自己的 TextExpander Snippets,主要用于辅助填写 Objective-C 中的 property 。 使用方法很简单,把需要作为 property 的实例变量声明拷贝下来,然后敲几个键就可以触发 TextExpander 自动完成对应的 @property 和 @synthesize 。录了一段 screencast ,一看就明白了。抛砖引玉。 今天看到有人说 TextExpander 也就是 Windows 上 Google 输入法的默认功能,不知道 Google 输入法能做这样的事情不。 点击下载

浅谈Blocks

在上次的Snow Leopard tech review摘要中提到,Snow Leopard(实际上是Xcode 3.2附带的编译器)开始支持Blocks。这是一个非常有意思的功能,以前通常只有一些动态语言支持,而现在,C/C++/Objective-C也可以用上这个功能了。 Block, 简单的说,就是一个函数对象,和其它类型的对象一样,你可以创建它,可以赋给一个变量,也可以作为函数的参数来传递。计算机科学中,更常用的名字是”closure”或者”lambda”。先通过一个例子看看什么是Block: void (^hello)(char*); hello = ^(char* str) { NSLog(@”hello %s”, str); }; hello(“robin”); 这段代码申明了一个block变量hello,然后用一个block对象为它赋值,最后调用了这个函数。这是打印出的结果: 2009-09-06 16:36:12.693 blocks[6379:903] hello robin 再看一个例子。玩ruby的都知道each方法,可以很方便的遍历一些数据组合。比如: [1,2,3].each {|x| puts x } 就可以打印出 1 2 3 现在,我们也可以为NSArray加上这样的方法。我为NSArray写了一个Category,加入下面函数的实现: – (void)each:(void (^)(id))block { for (id obj in self) { block(obj); } } 很简单,我们就有了一个属于NSArray的each。看一个调用的例子: 
NSArray * array = Read more about 浅谈Blocks[…]

iPhone Application Post Build Script

很多平台软件开发发布前, 有个很重要的事情就是保留好符号表(symbol)文件. 因为发布的软件一般来说都去除了符号表, 而符号表对于维护是很重要的信息, 没有它, 在拿到call stack后会很难对应到代码中. iPhone开发也是一样, 每次做完Build, 都会有一个.dSYM的目录, 就是符号表. 有了它, 在用户提交crash log后会很容易定位问题. 手工保存这些符号表文件很容易产生疏漏, 恢复起来又麻烦. 我做了一个脚本, 添加到Target的Run Script Build Phase中, 可以在Build类型是Distribution时, 将build出的binary和符号表分别打包为: [application].app.[version].zip [application].app.dSYM.[version].[git hash].zip 如果你用的版本管理系统不是git,需要对脚本做相应改动. 以下是脚本代码 #!/usr/bin/env ruby if ENV[“BUILD_STYLE”] == “Distribution” && ENV[“ARCHS”] == ‘armv6’ common_git_paths = %w[/usr/local/bin/git /usr/local/git/bin/git /opt/local/bin/git] git_path = “” common_git_paths.each do |p| if File.exist?(p) git_path = p break Read more about iPhone Application Post Build Script[…]

分享一下我的xcode主题

根据我自己的经验,白底色的编辑器是比较伤眼睛的。在使用编辑器的时候,我会尽量选择暗底色的主题。TextMate 里有不少不错的主题,但xcode中缺省的暗底色主题比较一般。我稍微改动了一下,做了一个新的出来,大概效果如下: 如果需要,可以从这里下载:DarkCity.xccolortheme。然后拷贝到/Developer/Library/PrivateFrameworks/XcodeEdit.framework/Resources 就可以用了。 Update: XCode 4 请下载:DarkCity.dvtcolortheme。然后拷贝到 ~/Library/Developer/Xcode/UserData/FontAndColorThemes 目录下。