說說我和Mac(二)

池建強發表於2013-05-14

回覆 98 可以看 《說說我和Mac(一)》,今天是二。

我在洪恩軟體一共工作了3年半的時間,這段經歷讓我的能力和見識得到了長足的成長。期間做過網際網路(沒錯,就是傳說中的第一波網際網路神奇泡沫,一觸即潰),基於Perl構建洪恩線上網站;做過企業級軟體數字校園,基於Java和Jsp技術;做過英語培訓軟體,基於.Net和C;還管理過兒童產品事業部。不過讓人非常傷感的是,我參與的大部分軟體專案都以失敗告終,洪恩線上遭遇網際網路泡沫,數字校園過於超前,銷量一般,英語培訓碰到2003年非典,完全無人問津。當時洪恩的主要的業務還是電腦教育、高教、英語、兒童軟體等,現金流良好。但安則思變,公司開始嘗試其他的業務型別,比如網際網路、遊戲、企業軟體、培訓等等,這些專案我基本都參與了,但成者寥寥,這對當時年少輕狂的我來說打擊非常大,經常參與失敗或無疾而終的專案會讓人產生對己對人的懷疑和不自信。

要麼留下來繼續堅持,要麼出走尋找新的挑戰,這是很多人當時的選擇。有些人選擇堅持,有些人選擇離開,留下的很多技術人員組成了後來的遊戲公司完美時空的技術和策劃班底,完美時空2007年在納斯達克上市,目前發展得非常好。離開的人,則就各自有各自的生活和精彩。

所以說選擇這個動作真的很神奇,人生漫漫征途,到處十字路口,每次選擇就把你帶向一個完全不同的路和沿途的風景,我們只能慨嘆,嗟夫,人無常勢,水無常形。

當時我選擇了離開,那段時間是1999到2003年。在這段時期裡,地球的那一邊,賈伯斯正在重新整肅蘋果,在進行了精兵健身並相繼推出了iMac和iPod,蘋果正在一步步走向巔峰,只不過還沒有看看到這家沒落帝國的潛力,在國內,Mac仍然是稀有物品,我也僅僅見過兩款。(待續)

昨天談了第一季第二季的想法,有讀者回復,一季一季也不錯,間歇期間可以出點題目之類讓大家投稿,分享大家的想法。

這個思路,我覺得不錯。

今日Mac技巧:

說完了Objective-C的Category,今天簡單說說Protocol。

Protocol,簡單來說就是一系列不屬於任何類的方法列表,其中宣告的方法可以被任何類實現。這種模式一般稱為代理(delegation)模式。你通過Protocol定義各種行為,在不同的場景採用不同的實現方式。在iOS和OS X開發中,Apple採用了大量的代理模式來實現MVC中View和Controller的解耦。   定義Protocol很簡單,在宣告檔案(h檔案)中通過關鍵字@protocol定義,然後給出Protocol的名稱,方法列表,然後用@end表示Protocol結束。在@end指令結束之前定義的方法,都屬於這個Protocol。例如:

@protocol ProcessDataDelegate <NSObject>
@required
- (void) processSuccessful: (BOOL)success;
@optional
- (id) submitOrder: (NSNumber *) orderid;

@end   以上程式碼可以單獨放在一個h檔案中,也可以寫在相關類的h檔案中,可以視具體情況而定。該Protocol包含兩個方法,processSuccessful和submitOrder。這裡還有兩個關鍵字,@required和@optional,表示如果要實現這個協議,那麼processSuccessful方法是必須要實現的,submitOrder則是可選的,這兩個註解關鍵字是在Objective-C 2.0之後加入的語法特性。如果不註明,那麼方法預設是@required的,必須實現。   那麼如何實現這個Protocol呢?建立一個普通的Objective-C類,取名為TestAppDelegate,這時會生成一個h檔案和m檔案。在h檔案中引入包含Protocol的h檔案,之後宣告採用這個Protocol即可,如下:

@interface TestAppDelegate : NSObject<ProcessDataDelegate>;
@end

用尖括號(<...>)括起來的ProcessDataDelegate就是我們建立的Protocol。如果要採用多個Protocol,可以在尖括號內引入多個Protocol名稱,並用逗號隔開即可。例如  m檔案如下:

@implementation TestAppDelegate
- (void) processSuccessful: (BOOL)success{
    if (success) {
          NSLog(@"成功");
    }else {
            NSLog(@"失敗");
    }
}    
@end 

由於submitOrder方法是可選的,所以我們可以只實現processSuccessful。

文章內容來自微信公眾賬號:Mac技巧
微訊號:sagacity-mac
查閱和分享
· 回覆 m 可以查閱所有歷史文章
· 輸入文章編號,檢視對應文章內容
· 點選右上角—>分享到朋友圈
· 點選右上角—>複製連結在瀏覽器檢視
申明
自由轉載-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0,專業媒體轉載請與新浪微博 @池建強 聯絡

相關文章