2012年4月22日 星期日

Objective C 學習隨記(一)

最近因為Iphone4s 很熱, 開始對這Apple劃時代的產品產生興趣, apple跳脫舊科技公司產品的思維, 賣的不只是冰冷的硬體, 他還創造了一個ecosystem方便軟體工程師可以很方便的從開發環境到測試最後到線上銷售, 一條龍不需要太大的進入門檻, 這無疑讓軟體設計師可以不需要自組一個公司處理銷售服務, 完全只需要發揮創意! 想想台灣雖然身為科技島, 但是全都偏向代工, 對於創新的產業著墨不深, 當apple 和 google相繼開發出軟體開發平台, 這無疑的對台灣產業轉型, 提供一個最佳的機會, 畢竟創意才是科技的根本 

Ok 轉回主題, 不管是iphone還是ipad, 都是在apple公司開發的iOS上跑, 而iOS是從MacOSX 針對embedded device最佳化修改成的OS, 等同於Android是google基於linux 架構針對embedded device修改而成, 當然apple為了增加它應用程式(俗稱apps)的多樣性, 它徹底揚棄Microsoft對於開發人員設定的門檻, 這不得不說MS的失策, MS早在2000年初就進入smartphone的市場, 當時smartphone幾乎是MS獨佔, MS對每隻smartphone收的loyalty 超高, 加上MS對於Visual Studio收費真是高的嚇人, 所以會去開發它win ce apps的很少, 造成買了device卻沒甚麼apps可用的窘境, 一直到現在window mobile還在垂死掙扎, 就不多批評了.

不管iOS或Mac OSX應用程式都是用同一套開發工具,是免費的Xcode, 現在最新版本是4.0 , 使用的程式語言是objective C 這系列主要就是我讀一本書 "Programming in Objective-C" 4th edition的一些筆記 

objective-C 應該說是C的進化物件導向版本, 觀念非常像C++ class inherit 的觀念

 class宣告 

@interface Classname : NSobject //:NSObject 代表繼承於NSObject 
@property int a,b; //
@property代表 a跟b的 setter 和 getter由compiler自動產生, 要和implementation理加@synthesize a,b; 
-(return type) methodname:(type)para1:(type)para2;
@end 

class定義 

@implementation Classname
@synthesize a,b;
-(type) methodname: (type)para1:(type)para2 

 //statements 
}
 @end

 一般在實做class時要先allocate,再init 格式是
[[classname alloc] init] [classname alloc]會回傳一個class instance, 再呼叫class instance的init功能 也可以用 [classname new] 取代上述

沒有留言:

張貼留言