用已經建立的知識學習一門新的知識,有的時候會事半功倍,但有的時候也會適得其反,因為我們已有的知識跟新知識可能相似,也可能有一些概念上的衝突,在javascript的博文中,我已經說了我的感受。
衝突的東西當我理解了,那就叫做進步,我們無法用已有的知識一步走到死,因此要經常的吸收一些外來的新鮮血液。
一些概念,思想和現有知識不太一樣的東西,我在學習初期可能比較困難,有的時候搞的自己情緒波動不穩定,還反而的問自己,是不是自己學不會這個東西,怎麼在這個知識面前像個白癡,不怕學不會,就怕不學,認真對待,堅持一段時間就沒有
這種想法了。我也用java和C#這樣的舉過例子,因為這兩個很類似,因此只會其中的一個,學另外一個花不了多少時間,但是這是讓入門,如果深入的話,那還需要更多的時間,學習是少不了以時間為代價的。
明天就除夕了,今天在這裡看著IOS,雖然說在堅持,但是效率低下,看幾句,歇一歇,還不斷的斜視電腦右下角的時間,心裡不斷的念叨“還沒下班,今天會不會早走”之類的話。
無論忙也好,閑也罷,今天就讓自己輕鬆點,只希望2013年有所獲,有所得。
IOS開發用的是Object-c簡稱OC,是在C語言的基礎上擴充起來的,加入了物件導向的東西,我們知道還有一個語言也是如此,我知道你知道的C++,因此很多學習OC的語言都會從發展史說起,其實瞭解這個發展史是很有意義的,
我們可以知道那個時代都有那些東西,以及那個時候這些東西的功能,用現在知識去判斷當時的東西是否完善,缺少什麼等?
OC中沒有模板,沒有多繼承,沒有private方法,沒有內嵌函式,沒有virtual關鍵字等。OC中的協議相當於C#中的Interface,而Interface相當於c++中的類,.m檔案相當於c++中的.cpp檔案,委託相當於C#中的委託,OC中的集合卻只能容納對象,OC中對象的構造分了兩部,
沒有和C#/java中類名相同的建構函式一說,而是可以返回一個id類型的東東,現在我們看OC中的協議和委託吧。
以下內容來自:http://blog.csdn.net/jacky_jin/article/details/7004013
協議,就是使用了這個協議後就要按照這個協議來辦事,協議要求實現的方法就一定要實現。委託(代理),顧名思義就是委託別人辦事,就是當一件事情發生後,自己不處理,讓別人來處理。
1. 同時用到協議及委託有兩個類,一個是控制器類,一個是view類當使用者操作view時,需要通知控制器,讓控制器去處理一些邏輯時,需要用到委託及協議 controller.h#import "view.h"@interface Controller:NSObject<TestDelegate>{View* _view;}@end controller.m@implement-(void) viewDidLoad{ view =[ [View alloc] init]; view.delegate = self; //這裡用到委託,意思就是View把事情交給Controller去處理。 體現出MVC的思想}// View 其實並沒有實現testMethod1及testMethod2, 在這裡實現-(void) testMethod1{ //deal logic}-(void) testMethod2{ //deal logic}view.h@protocol TestDelegate-(void) testMethod1-(void) testMethod2@end@interface View:NSObject{id <TestDelegate> delegate;}view.m#implement// 處理view上的一些使用者事件-(void)OnAction1{[delegate testMethod1];}-(void)OnAction2{[delegate testMethod2];}@end2. 單獨用到協議可以看一下NSObject類,這是所有objectc 類的基類,它實現了<NSObject> 協議當有一個類NSString* str;可以[str retain];retain 就是NSObject協議裡指定的一個方法,而並不是NSObject類的成員方法我相信在NSObject類裡有-(id) retain{// some code return self;} NSObject類會去實現這個方法,因為這個方法是NSObject協議裡規定的。學過C++的人 會有所體會這裡的協議 有點像C++裡的抽象類別。這樣是否會有助於理解?