用 Objective-C 從二進位檔案(binary file)中讀入數值的 byte order 問題

要從二進位檔案中讀入數值,其中一個會遇到的問題就是 Little-endian 和 Big-endian,這和 CPU 的種類有關。Intel 系列的 x86 CPU 使用的是 Little-endian,而 PowerPC、ARM 等的 CPU 則是採用 Big-endian。endian 不同的問題,在以前 PPC 的時代算是相當重要,後來改用 Intel CPU 之後重要性就下降了許多,不過現在因為 iPhone 採用的 ARM 又是 Big-endian,所以這問題的重要性又大幅提升了,尤其許多新手設計師,之前可能根本沒碰過非 Intel 的平台,根本沒考慮過這問題,於是寫出來的程式就會讀到一堆詭異的數字。

Read More

NSNumber 與 NSInteger

在 Mac OSX 10.5 中新增加了 NSInteger 這個東西,但是這下就會跟 NSNumber 搞混,到底要用哪個?

基本上,NSInteger(以及類似的 NSUInteger)是為了解決在 32-bit/64-bit CPU 架構下,int 長度不同的問題,它的定義如下:

Read More

iPod Shuffle - Small talk

Apple 推出 iPod Shuffle 三代已經一段時間了,功能外觀不再贅述,雖然它的語音功能好像真的蠻好玩的,只是老是要聽人聲慢慢念,還是覺得有點麻煩。我比較感興趣的反倒是它的標語 “Small talk”。

看到 Small talk,實在沒辦法讓我不連想到那個程式語言 - Smalltalk。

Read More

iPhone Simulator 在 PPC 平台上執行 OpenGL ES 的顏色怪異問題


最近在寫 iPhone 上的 OpenGL 程式,不過雖然 Xcode 中就有提供 OpenGL 的樣版,但是因為對 OpenGL 不熟,看得不是很懂。

雖然後來自己改了裡面的程式碼,也畫出了東西,但是在 Simulator 中執行時整個就是怪,首先是顏色全部跑掉了,一般設定顏色的順序是 RGBA,但是在 Simulator 中顏色的順序居然變成了 GRAB,所以畫出來的顏色整個就是怪。

Read More

在 PowerPC 的 Mac 上安裝 iPhone SDK [續]

如果有朋友照著前一篇文章在 PPC 的機器上安裝 iPhone SDK 的話,應該會跟我遇到一樣的問題,那就是無法編譯 Project…

其實嚴格講起來也不是不能編譯,只是 Active SDK 沒辦法選用 Simulator,會得到 “No architectures to compile for (ARCHS=ppc, VALID_ARCHS=i386).” 的錯誤訊息。不過選用 Device 則可以正常編譯。不過這樣開發過程就會變得很麻煩,而且 Simulator 就完全沒用了。而且既然 Simulator 是 Universal 的程式,這應該是單純修改設定就可以解決的問題才是。

Read More

在 PowerPC 的 Mac 上安裝 iPhone SDK

如果你像我一樣還在用 PPC 的 Mac,卻又想開發 iPhone 的軟體的話,你會發現一個討人厭的問題,就是 iPhone SDK 不能裝在 PPC 的機器上。
iPhone SDK skip但是有人發現,iPhone SDK 裡面的所有程式都是 universal 的程式,也就是說,所謂的 “只支援 Intel-based Mac” 云云,只是 Apple 要逼退 PPC 機器的手段。

Read More

Xcode 與 C99 標準

寫程式時,迴圈是個避免不了的東西,而幾乎每個迴圈都會有個 counter。在大部分的情況下,這個 counter 是用過即丟的,因此我們常常會寫如下的 code:

for(int i=0; i<something; i++) {
some code here…
}

Read More