發表文章

目前顯示的是有「Mac Programming」標籤的文章

增加兩篇Xcode使用筆記

1. 如何檢查Block 2. 如何使用Code completion

Thread-Safe的經驗談

剛才在看Object-C 2.0的新功能 @property 宣告, 其中談到了 thread-safe , 如果您有寫過Multi-Thread的程式, 甚至寫過device driver, 相信對於thread-safe應該不陌生, 而且當你的Object中的member variables同時會被兩個以上的thread所存取, 這時候thread-safe的觀念就很重要, 因為你的accessor會有funtion re-entry的問題, 當write function還沒結束, 另一個thread又呼叫了Object的write function , 你永遠無法確保記憶體中的資料完整性, 所以在Driver 的DDK 都會有文件特別說明如何用Lock來確保memory access的時候, 只有當一個thread完成write後, 另一個Thread才能繼續write, 我發現這個觀念不僅在multi-thread中受用, 在Google App Engine中的Big Table也受用, 在Google的簡報, 讓我印象最深刻的一句話-- Writing data to big table is expensive , 因為每一次write data, google app engine就會將這份資料duplicate到不同的Cloud server , 這時候問題來了, 當不同的使用者, 同時從不同的Client, 同時要update一筆位在Big Table中的同一筆資料, 這個狀況跟寫driver或是multi-thread同時去寫Object中的member variables一樣. 不過thread-safe除了資料的同時存取, 在GUI framework似乎還有另一層意義-->代表強制分時多工的thread, 我在幾年前開發過一個Peer to Peer 的Cocoa 程式, 當時遇到一個棘手的問題, 當使用者在操作GUI的時候(例如用滑鼠右鍵一直按Scroll Bar), 我這隻Cocoa程式的背景負責傳送資料的thread竟然會受Cocoa GUI元件影響而stop住, 我當時找了許多資料, 結果有國外的cocoa developer 社群就很多developer說這是因為Coc...

iPhone 2.0 SDK沒有support Custom Framework

Cocoa的Framework相當於Windows的DLL, 但是剛才在測一個third party的library, 想把它編譯成Framework給iPhone Application使用, 當使用Xcode add target的時候才發現原來Custom Framework在Cocoa touch還沒有support :-(, 這對於要開發share library給不同的Application使用的開發團隊真的很不方便, 只能將所有的source code放在一起編譯, 難道Apple認為iPhone的Application都是只有一個人獨立開發就能完成?

Cocoa for Windows

圖片
長久以來我一直認為Apple內部是有Xcode for Windows的特殊版本,透過這個Xcode for Windows, Apple可以很輕易的將 QuickTime player, iTune , Safari ,重新編譯到Windows平台,所以這些Windows版的Apple軟體的操作相似度與Mac OS X版的軟體可以說是非常相像. Apple應該不太可能請一堆Windows programmer再使用MFC重頭寫過. 很可惜等了這麼多年, Steve Job一直沒有給我太大的驚喜, 就像當年他Announce Mac OS X也可以在Intel的平台執行一樣, 當年要是我沒聽錯, Steve Job是這麼說的-->Mac OS X從10.0開始開發, source code就已經支援並可以編譯到x86平台, 當時台下是掌聲雷動 ,當時我想, Mac OS X都可以porting到Intel平台, 在Mac OS X中使用 Cocoa 開發的軟體要porting到Windows應該不是太大問題, 當然這個不太大的問題讓我等了好幾年, 最後決定將軟體開發全部專心放在Java上. 一直到最近Apple release iPhone SDK, 讓我想起 Object-C , 這個塵封在腦海已久的程式語言. 今天還是在好奇心驅使下, 用google搜尋一下,看看是否在今年的WWDC前有什麼小道消息,Google的搜尋結果是先看到這一篇 Cocoa for windows Will not happen , 不過在第三個搜尋結果讓我看到了一絲希望 The Cocotron: Open-source Cocoa for Windows , 看起來除了我之外, 還是有許多Mac developer也希望自己所寫的軟體也可以擴展到Winodws市場, Cocotron 正是補足了這個缺口, 大概看了一下Cocotron, 很酷的是Cocotrol是提供Win32 gnu cross compiler給 Xcode (這邊有一個 Howto 教導如何將Xcode設定可以編譯Win32的target),所以Develpor還是使用Xcode環境來開發與編譯Windows平台的程式. 這樣大幅減少使用不同IDE的恐懼性, 這個就是我期待已久的功能, 這樣過...

iPhone官方版本發展套件2008年2月釋出

可參考 http://www.apple.com/hotnews/ , Apple在許多Developer的期望下終於要推出iPhone的developer套件, 而台灣的EeePC社群, 卻聽不到這種勸進聲音:-(, 不過 http://forum.eeeuser.com/index.php 已經有人在討論如果改裝EeePC的Linux