Dict Mac 到 Mac OS X 10.5

把 Dict Mac 介绍给同事们之后遇到最多的回应是『怎么是 10.6 only 的?』我喜欢用最新的东西,加上在家里测试 10.5 也并不方便,所以开发的时候没多想就选了 10.6 SDK。没想到连公司同事这些 Mac 的重量级用户还有不少没升级到 10.6,于是今天中午花了一个小时把最低平台需求降到了 10.5。其间遇到了几个小问题。

第一是 NSApplication 的 delegate 在 10.5 之下没有类型,在 10.6 下则正式定义为 NSApplicationDelegate 接口。不过真正起作用的 selector 都没有变化。把 delegate 的基类从 NSObject <NSApplicationDelegate> 变成 NSObject 之后就解决了问题。第二个问题是 NSTextView 的背景色设置成 [NSColor clearColor] 在 10.6 下工作的很好,到了 10.5 下就变成了黑色,变成 [NSColor windowBackgroundColor] 才行。虽然效果相同,但是从正常思路来说我是希望让控件的背景透明,而不是让它『碰巧』和窗口同色,而且遇到那些背景色可以在运行的时候定制的窗口,非透明的控件还要多写代码来同步颜色。

上面两个问题解决之后,Dict Mac 就可以正常的用 10.5 SDK 编译了,在 OS X 10.6.2 上运行也一切正常。之后遇到的问题最离奇,程序在 OS X 10.5 上启动后就会崩溃,crash log 报告 selector [DictWindow awakeFromNib] 不存在。Google 之后发现遇到类似问题的人不少,唯一找到的 workaround 是把 [DictWindow awakeFromNib] 里的 [super awakeFromNib] 去掉(完全莫名其妙的改法,这是一个人记得刚刚升级到 Xcode 3.2 的时候并没有这个问题,然后从自己的 version control 找到当时的代码才得到的解决方案)。

降级 SDK 总会遇到一些小麻烦。也能从中看到 SDK 的每次升级都确实给开发工作减轻了不少负担,唯一遗憾的是用户们升级得没有那么快,新 SDK 的推出带来的好处要过上一段不短的时间才能让开发者受益。

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

You are commenting using your WordPress.com account. Log Out /  更改 )

Google+ photo

You are commenting using your Google+ account. Log Out /  更改 )

Twitter picture

You are commenting using your Twitter account. Log Out /  更改 )

Facebook photo

You are commenting using your Facebook account. Log Out /  更改 )

Connecting to %s


%d 博主赞过: