Leopard 的 Garbage Collection

從 10.5 Leopard 開始,Mac OS X 開始支援 Objective-C 2.0 語言,其中一項賣點就是支援一套 Garbage Collection 系統。於是,以後寫 Obj-C 程式的時候,就不用注意每一個產生的物件到底是會 autorelease 還是要自己 release,不用注意是不是有哪些物件忘記 release,從此寫程式不用顧及記憶體的問題,世界從此又變得更為光明美好…

才怪。

這兩天的測試結果,大概發現了幾件事情:首先,雖然 Leopard 支援 GC,但是系統中大部份的應用程式,還是透過非 GC 的方式寫出來的,但是,就是有軟體是用 GC 狀態下寫的,例如 Xcode 3,在這類的軟體中,就會出現這樣的問題:在 Leopard 上面編成了使用 GC 的應用程式,也只能夠載入透過 10.5 SDK 編譯出來的各種 plugin,而如果 plugin 裡頭又用到了非 GC 的 Class,那麼,這個 plugin,就足以造成應用程式 crash…。

就拿 Xcode 3 來說好了。基本上,Xcode 3 也不能夠載入多少 plugin,但是我偏偏寫了一個可以讓 Xcode 3 載入的 plugin,就是前面說到的 ColorBy.ColorPicker 這個 Color Picker;而一般來說,寫程式好像也不太需要一天到晚挑顏色,但是我這個 Color Picker 就好死不死,就是打算寫給 Xcode 用的。而如果你妄想著這一個 Color Picker 還可以在 Tiger 上與 Leopard 上都可以使用,所以用 10.4u SDK 編,你可以在所有其他應用程式中看到你的 Color Picker,但,很抱歉,就是不會出現在 Xcode 3 裡頭。

至於在 Leopard 上面,可能在程式裡頭,用到什麼哪些沒有支援 GC 的東西呢?至少 IKImageFlowView 就不支援;換言之,如果你想要在 Color Picker 上面做出 Color Flow 效果,就等著在某些應用程式裡頭爆炸。而 Apple 官方也只有在 Finder 與 iTunes 裡頭用到 Cover Flow,也就是,官方也還只有在 Carbon 程式裡頭用 Cover Flow 啊…。

(順道一提。想來,Color Picker 也應該能夠拿來做一些有趣的壞事,在整個作業系統中,可以在所有應用程式裡頭都用到的東西,除了輸入法之外,就是 ColorPicker。)

CoverFlow + DigGirl

自從找出了 CoverFlow 效果的這個 Class – IKImageFlowView,就開始到處試著用用看;而如果用 CoverFlow 瀏覽 DigGirl 透過 RSS 發佈出來的資料,就會像下面這個樣子:

DigGirl Cover Flow

在圖上面點兩下,會開啟相簿的網頁。而 DigGirl 的 RSS 裡頭只有提供縮圖,在 CoverFlow 裡頭看的時候,效果似乎也不是那麼理想啊…。

下載(僅供 Mac OS X 10.5 使用)

Update:

0.2 版,使用高解析度的圖片顯示。

最近真的有一種在 PowerPC 上跑 Leopard 的用戶不是人的感覺

這兩天實在有種想把手上的機器砸了的衝動。

一、如果您用的是使用 PowerPC CPU 的麥金塔電腦,作業系統是 Mac OS X 10.5 Leopard,也安裝了 Xcode 3;如果您要編譯一些 C 或是 C++ 程式(例如 OpenVanilla 的各個外掛模組),編譯成供 ppc 使用的二進位檔案,請不要使用 /usr/bin/ 底下的 gcc 以及 g++,請改用 /Developer/usr/bin 目錄下的程式;後者是正常的,前者則是爛的,會跳出這樣的訊息:

/usr/libexec/gcc/powerpc-apple-darwin8/4.0.1/as: assembler (/usr/bin/../libexec/gcc/darwin/ppc/as or /usr/bin/../local/libexec/gcc/darwin/ppc/as) for architecture ppc not installed
Installed assemblers are:
/usr/bin/../libexec/gcc/darwin/ppc64/as for architecture ppc64
/usr/bin/../libexec/gcc/darwin/x86_64/as for architecture x86_64

但是,如果是在 Intel CPU 主機上,則沒有這個問題。(非常好奇蘋果內部的開發者是不是已經沒有人在用 PowerPC 主機。)

Continue reading

Input Method Kit

上周五終於(是的,終於)釋出了 OpenVanilla 0.8 的正式版本。

在這一次釋出中,包含了一套專供蘋果的最新作業系統—Mac OS X 10.5 Leopard 的專用版本,而另外一個 0.8 的安裝套件,除了可以在 Tiger 上使用,其實也是可以在 Leopard 上面安裝的。如果您在安裝了 Leopard 版本後遇到使用問題,也可以改裝這個版本。

這兩個版本的差別在於,非 Leopard 專用版用的是蘋果過去的輸入法架構,將輸入法模組寫成 System Component,透過 Carbon API 提供文字服務(Text Service Manager,TSM);而 Leopard 專用版本,則是使用了 Leopard 所提供的新的輸入法架構—Input Method Kit(以下簡稱IMK)。

Continue reading