網頁

2011年4月13日 星期三

使用GNUmakefile


好的工具讓你上天堂,爛的工具讓你下地獄,講都沒在聽…(爛梗)

Makefile其實在unix like的環境中,一直扮演很重要的角色,熟悉makefile可以讓你在編譯時達到事半功倍的效益。



一樣以之前的hello.m為例,在相同的目錄下,加入一個名為GNUmakefile的檔案,檔案內容如下:

include $(GNUSTEP_MAKEFILES)/common.make

TOOL_NAME = hello
hello_OBJC_FILES = hello.m

include $(GNUSTEP_MAKEFILES)/tool.make

檔案存檔後,在命令列輸入make執行編譯動作,會在同一目錄下產生一子目錄(./obj)及產生執行檔。

在命令列輸入 ./obj/hello,會得到相同的Hello World!結果。

有關GNUmakefile詳細使用方式,可以參考 Writing GNUstep MakefilesGNUstep Makefile Package

閱讀全文...

ObjC的特色


ObjC就是C加上物件導向的特性,很接近Java,比C++精簡,許多概念都是從SmallTalk而來的。

  • 單一繼承,只可以有一個superclass 
  • C++JAVA使用 funcation call[Object.funcation(args)]ObjC也是,只是改稱為message,格式改為[Object method:args],使用dynamic binding,並不是在編譯的時候處理。 
  • Category類似JavaC++中的Subclass用來增加原有的Class短缺的method,差別在於Category只能新增method,不能新增變數,而C++javasubclass可以。 
  • Protocol類似JavaInterface,用來解決沒有多重繼承的問題。

閱讀全文...

GNUstep初探


GNUstep主要提供兩個函示庫,FoundationAppKitFoundation用來處理非圖形介面,又稱為GNUstep BaseAppKit用來處理圖形介面,又稱為GNUstep GUI。最後衍生出OpenStep介面,可用在MachWindowsSolarisHP/UX,更進一步成為MacOSXCocoa環境。


GNUstep 包含四個主要部份:
1. GNUstep Make:提供類似 Makefile 的功能。
2. GNUstep Base:提供 OpenStep Foundation 程式庫,用於處理非圖形介面的功能。
3. GNUstep GUI:提供 OpenStep AppKit 程式庫,用於處理圖形介面的功能。
4. GNUstep Back:提供與作業系統相關的後端處理,提供 GNUstep GUI 有關繪圖及字型的功能。讓使用者不用考慮作業系統問題。

閱讀全文...

2011年4月12日 星期二

在Windows環境下編譯ObjC


雖然安裝完環境後,也嘗試編譯OK,但想到每次都要打那落落長的一串,心裡就

懶是進步的原動力,翻完了GCC Online Documents(http://gcc.gnu.org/onlinedocs/)發現,GCC預設的環境變數有OBJC_INCLUDE_PATH,有這個真的方便多了,在unix like環境有.profile可以發揮其妙用了。


1.        UNIX like環境(這邊是Windows底下採用MSYS環境)
1.1.       開始/所有程式/GNUstep/shell” 開啟 MSYS
1.2.       home 目錄下,打開 .profile 檔案,此檔案的內容會在每次新進入的shell時執行一次,在檔案裡面鍵入下列兩行:
export OBJC_INCLUDE_PATH=/c/GNUstep/GNUstep/System/Library/Headers/
export LIBRARY_PATH=/c/GNUstep/GNUstep/Library/Libraries/


說明:兩行用來設定ObjC header filelibrary 路徑,GCC會造此設定去尋找所需的檔案。
1.3.       重新開啟MSYS或在原MSYS的命令列鍵入執行
. ~/.profile
編譯看看
$ gcc `gnustep-config –objc-flags` hello.m -o hello -lgnustep-base –lobjc


閱讀全文...

2011年4月11日 星期一

Objective-C環境(使用GNUStep)安裝於Windows


為了建置一個練習Objective-C語言的環境,GNUstep是一個不錯的選擇,一個實作出Cocoa APIs的跨平台開發環境,可以在LinuxWindows平台下使用。底下以Windows(我的電腦為Windows 7)為例。


1.        先至GNUstep的下載頁面(http://www.gnustep.org/experience/Windows.html)下載GNUstep MSYS SystemGNUstep CoreGNUstep Devel(不裝這個就無法編譯程式),這邊下載的是0.25.x版本,安裝到Windows上,這樣就會有MinGW這個開發環境和相關程式。
2.        安裝GNUstep MSYS System,標準的windows安裝步驟,同意license,採用預設值,一直按Next就可以安裝完成。








3.        安裝GNUstep Core,標準的windows安裝步驟,同意license,採用預設值,一直按Next就可以安裝完成。







4.        安裝GNUstep Devel,標準的windows安裝步驟,同意license,採用預設值,一直按Next就可以安裝完成。








5.        執行GNUstepshell視窗
執行 開始/所有程式/GNUstep/shell” 會出現下面畫面,安裝時都採預設值時,起始目錄對應的實體硬碟目錄為C:\GNUstep\home\<使用者名稱>

6.        又見Hello World
預設環境中會有Vim,打開產生hello.m,鍵入下列程式碼。
#import

int main(int argc, char *argv[]){
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    NSLog(@"Hello World!");

    [pool drain];
    return 0;
}

7.        編譯及執行
shell視窗鍵入:
gcc `gnustep-config --objc-flags` -L /GNUstep/System/Library/Libraries hello.m -o hello -lgnustep-base –lobjc

./hello 執行



閱讀全文...

2011年3月15日 星期二

iphone預設行事曆同步多個Google行事曆的設定方法

此設定無法在電腦進行,一定要使用iPhone連上網路操作才可以設定完成!
1. 打開Sarfari,輸入 http://m.google.com/sync
2. 因為不支援中文,必須先"變更語言",將語言改成 "English (US)"才行。
3. 登入 Google 帳號。
4. 選擇同步裝置,例如 iphone 。
5. 勾選要同步的行事曆後,save,就設定完成了。
閱讀全文...

iphone 收 Gmail (透過Exchange)

1. 設定->電子郵件/聯絡資訊/行事曆->加入帳號
2. 選擇 "Microsoft Exchange"
3. 填入下列資料:
   電子郵件、使用者名稱、描述:都填您的 @gmail.com 完整帳號
   密碼:填入您的 Gmail 密碼。
   伺服器: m.google.com
   網域: 不用填。
   輸入完了點右上角的「下一步」即可設定完成。
4. 可以選擇要同步的項目,選擇電子郵件和行事曆就好,聯絡資訊不要選,除非你的gmail聯絡人和你的手機聯絡人資料是一樣的。
5. 擷取新資料可以開啟推撥,可以即時知道有mail進來,只是會很耗電。
6. 收不到mail時,請確認你的gmail帳號內的設定,IMAP存取是否有打開。
閱讀全文...