2008年 8月29日
如果你对Ruby On Rails有一点了解的话,一定会知道ActiveRecord的大名。ActiveRecord对于存取数据库的操作简单到飞起,开发者再也不用去考虑麻烦的SQL查询,而是把记录当做对象来用就是了。
Ruby On Rails热,ActiveRecord自然也就有人学着做,各种版本各种语言模仿ActiveRecord的到处都是,如果你的数据库程序没用上ActiveRecord,都不好意思出门……
苹果疯子们自然不甘示弱,有人也写了一个Objective-C版的ActiveRecord。
2008年 8月16日
前些天有读者提出需要在iPhone中开发Email的程序。在iPhone的SDK中除了使用mailto的方式发送邮件之外暂时还没有其他更好的方法。
这里介绍两个基于Objective-C的Open Source的Email代码,理论上来说经过微小的修改就可以用于iPhone中,不过需要注意的是请注意这两个代码的授权方式。
2008年 8月9日
如果你准备写一个类,希望保证只有一个实例存在,同时可以得到这个特定实例提供服务的入口,那么可以使用单态设计模式。单态模式在Java、C++中很常用,在Cocoa里,也可以实现。
由于自己设计单态模式存在一定风险,主要是考虑到可能在多线程情况下会出现的问题,因此苹果官方建议使用以下方式来实现单态模式:
2008年 8月2日

Mac上一直比较流行的图片设计思路是在一个图片上面增加一个倒影,使其看起来的感觉像是放在一个透明的桌子上。最流行的就是iTunes中的CoverFlow。这个思路后来也被众多的Web 2.0公司的Logo设计者们普遍使用。
NSImage Reflection这段小代码是NSImage的category,专门用来在图片上添加倒影。你可以直接用它在图片上添加倒影效果。
代码可以在这里下载,用法也非常简单:
因为这个代码扩展了NSImage,所以要在某个NSImage图片上添加倒影,只需要使用[NSImage reflectedImage: amountReflected:]方法就可以了。很容易看明白,reflectedImage参数直接带上一个NSImage图片,amountReflected参数则是倒影的深度,用浮点数表示。
另外,代码使用了CTGradient类,如果你只想在Leopard中使用,也可以改改代码,直接使用NSGradient就可以了。
2008年 8月1日
封装不封装,这是个问题。
今天我在看Cocoa开发者邮件列表的时候,看到一个帖子,求助如何在两个View之间互相通信的问题。做Windows程序员的时间长的我都不好意思说了,我意识到,这个问题在我刚刚接触到Mac上的Objective-C时也遇到过。
我现在可以提出这个问题的简化版:“我有一个对话框,获取了一些用户输入的数据。我现在需要从我那个对话框中把这个数据提取出来以供主窗口使用。如何才能从主窗口获取到对话框里的数据呢?”
2008年 7月19日
2008年 7月16日
WebKit是苹果开发中比较常用的浏览器引擎,Safari使用的正是WebKit引擎。WebKit基于KDE的KHTML加以再开发,解析速度超过了以往所有的浏览器。这里简单记录一下WebKit的基本用法。
2008年 7月15日
Lua是一种非常好的脚本语言,最常用的是在游戏中。目前最强悍的MMORPG:World of Warcraft魔兽世界的UI插件便是用Lua写成。
LuaCore是一个Objective-C框架,专门用于在Cocoa中使用Lua脚本。同时,它还可以将Lua的数据直接转化成Objective-C的对象,更方便使用。
这里是一个例子,演示如何使用LuaCore:
2008年 7月9日
JSON是一种新的用于在互联网上进行数据交换的标准格式。由于它的冗余、可读性和可解析性都比XML要好,因此JSON这种数据交换格式越来越广泛地运用于Web应用,尤其是Ajax应用中。
在Cocoa中使用JSON也很简单,目前有两个JSON的框架,都很容易使用,而且都对NSDictionary进行了扩展,您可以选择其一将JSON“揉”到您的Cocoa应用程序里。
2008年 7月8日
在几天前Cocoachina介绍了关于Objective-J的内容,今天又有关于它的最新消息。
280的Tom在今天给我的邮件中提到,首先可以确认的是它将会是一个开源框架,而且有可能将会在几周内发布。
2008年 7月7日

TagLib是KDE开源项目的一个很有用的C++函数库,可以用于读取各种格式的歌曲ID3信息,诸如歌名、歌手、专辑等信息。
1.5版的TagLib支持MacOS,我们可以在Cocoa中直接使用TagLib来获取MP3歌曲的ID3信息。上图就是使用TagLib获取的歌曲信息,没有使用iTunes。
2008年 7月6日
如果你用过TimeMachine,你一定知道里面有一个开关组件,可以划动进行开关操作。这个组件也提供了同样的功能。同样需要作者另外的一个amber framework框架的支持,并且只能运行在Leopard上。

组件下载地址在这里。
2008年 7月5日
这是一个完全iLife 08风格的Source List代码,支持bindings。

下载地址在这里。作者是Keith Du。由于需要作者另外的一个amber framework框架的支持,因此这个组件只能运行在Leopard上。
2008年 7月2日
.png)
Leopard中提供了HUD形式的窗口,但是并没有提供其他同样风格的控件,诸如按钮、单选框等。BGHUDAppKit是一个专门制作这种风格的开发包,专门用于制作HUD整体风格的UI。
之前其实也有人实现过类似功能的程序,最知名的是Matt Gemmell的HUDWindow,但是BGHUDAppKit的特点是并没有使用图片进行UI的处理,而是完全用代码将界面画出来。这样做的好处很明显,做出来的程序是与分辨率无关的,也就是说无论在什么分辨率下(即使你用30寸的显示器)显示的效果都是完全一样的。
2008年 7月1日
GCDrawKit是一款非常强大的矢量图程序开发包,有了它的帮助,你可以轻松用Cocoa开发出类似Illustrator或者Freehand这种矢量工具,当然,处理简单的图形工作也不在话下。