在學(xué)習(xí)本課程前你需要:
1.面向?qū)ο缶幊谈拍?/p>
2.較多的編程經(jīng)驗(yàn)
iOS四層體系:
1.cocoa touch?
2.media
3.core services
4.core OS
學(xué)習(xí)的東西:
1.工具:Xcode instruments
2.語言:objective-c
3.框架:最重要的兩個(gè)是foundation和UIKit汛闸,其他的還有core data,mapkit艺骂,core motion等
4.設(shè)計(jì)策略:M(model)V(view)C(controller)模式--將應(yīng)用所有的類有效的組織起來的策略诸老。
下面引用網(wǎng)上的一段博客,其對(duì)mvc模式的理解比較到位钳恕。
首先圖中綠色的箭頭表示直接引用别伏。直接引用直觀來說,就是說需要包含引用類的申明頭文件和類的實(shí)例變量忧额±灏梗可以看到,只有Controller中宙址,有對(duì)Model和View的直接引用轴脐。其中對(duì)View的直接引用體現(xiàn)為IBOutlet。然后我們看View是怎么向Controller通訊的。對(duì)于這個(gè)大咱,iOS中有3種常見的模式:設(shè)置View對(duì)應(yīng)的Action Target恬涧。如設(shè)置UIButton的Touch up inside的Action Target。設(shè)置View的delegate碴巾,如UIAlertViewDelegate, UIActionSheetDelegate等溯捆。設(shè)置View的data source, 如UITableViewDataSource。 通過這3種模式厦瓢,View達(dá)到了既能向Controller通訊提揍,又不需要知道具體的Controller是誰是目的,這樣就和Controller解耦了煮仇。最后我們看Model劳跃。Model在圖上有一個(gè)信號(hào)塔類似的圖形,旁邊寫著Notification & KVO浙垫。這表明Model主要是通過Notification和KVO來和Controller通訊的刨仑。關(guān)于Notification,我寫了一個(gè)模版代碼片段如下:
// 監(jiān)聽通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(<#methodName#>) name:kLoginNotification object:nil];
// 取消監(jiān)聽
[[NSNotificationCenter defaultCenter] removeObserver:self];
// 發(fā)送通知
NSDictionary * userInfo = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:200] forKey:@"code"];
[[NSNotificationCenter defaultCenter] postNotificationName:<#notification_name#> object:self userInfo:userInfo];
所以夹姥,對(duì)于初學(xué)者杉武,要正確地使用MVC模式還是挺難的,回想我們以前做公司某產(chǎn)品iphone版的時(shí)候辙售,就有一些Model層直接依賴了Controller層轻抱,比如Model層更新數(shù)據(jù)失敗了,直接調(diào)用Controller層顯示出一個(gè)失敗的提示界面旦部。這樣層次劃分不清祈搜,造成我們做ipad版的時(shí)候很痛苦。最后我們做了代碼重構(gòu)士八,把Model的相應(yīng)改變都用Notification來完成夭问,使得在做ipad版開發(fā)時(shí)輕松了很多。
在講完這些基礎(chǔ)概念后曹铃,第一節(jié)課最后的時(shí)候白老頭演示了一下property是如何使用的缰趋。
這也是OC與其他面向?qū)ο笳Z言區(qū)別較大的一部分,需要理解使用proper與實(shí)例變量的區(qū)別與聯(lián)系陕见,分別有什么優(yōu)勢(shì)和劣勢(shì)秘血。