說說我和Mac(二)
回覆 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,專業媒體轉載請與新浪微博 @池建強 聯絡
相關文章
- 說說我和Mac(一)Mac
- 說說我眼中的Vue和ReactVueReact
- 說說我和圖靈的那些事兒圖靈
- 說說我對 WSGI 的理解
- 說說Oracle監聽器(二)Oracle
- 說說我眼中的IT界加班文化
- 【觀點】說APICloud之前,我們先說說開發者APICloud
- 說說密碼檔案Passwordfile(二)密碼
- 說說我心中的Linux系統Linux
- 說說我對 TypeScript 索引簽名 理解TypeScript索引
- “造輪運動”之 ORM框架系列(二)~ 說說我心目中的ORM框架ORM框架
- 說說我怎麼看攜程“假票”事件?事件
- 說說JSON和JSONPJSON
- 我和Linux,不得不說的故事Linux
- 說說我當初是如何學Linux的Linux
- 帝都三年Java,說說我的求職之路Java求職
- 二分查詢和折半插入排序一塊說說-很合適~~~排序
- 說說三層架構和MVC架構MVC
- 當我們說要繼續做技術,我們在說什麼?
- 說說我為什麼看好Spring Cloud AlibabaSpringCloud
- Spring Security實戰三:說說我的認識Spring
- 說說我們的用的Scrum敏捷開發工具Scrum敏捷
- 我們來說一說TCP神奇的40msTCP
- 遮罩層沒有消失 - 我們來說說 async、promise 和 yield 之間的那些事遮罩Promise
- 當我們說一款遊戲“涼涼”時,我們在說什麼?遊戲
- 當我們說外掛系統的時候,我們在說什麼
- PHP面試:說說你理解的二叉樹吧PHP面試二叉樹
- dockerfile語法小解說(二)Docker
- “我不想讓我的女兒知道我被騙錢了”|說說身邊的網路安全故事
- 說說JS中的原型物件和原型鏈JS原型物件
- 說說Darknet 如何和QT qtcreator配置使用QT
- [轉]說說C#的async和awaitC#AI
- 說說SERVER 斷電和ERP 系統Server
- 關於996,我想說996
- 簡單說說我最常用的圖片載入庫 Picasso
- 說說我出道後的處女作:剪貼簿神器 iPasteAST
- 面試官:說一說CyclicBarrier的妙用!我:這個沒用過面試
- Jenkins使用說明(Git for Mac)JenkinsGitMac