? ?開始寫這個讀書筆記,主要是為了鞏固強(qiáng)化ios的基礎(chǔ)知識,之前浪費(fèi)很多時間拆宛,在ios開發(fā)的細(xì)節(jié)上并沒有細(xì)細(xì)考究,知其然不知其所以然新博,總是在已經(jīng)造好的汽車上修修補(bǔ)補(bǔ)语稠,對于基礎(chǔ)的知識沒有一個完整透徹的認(rèn)識,知識樹殘缺不全睦裳,也就造成在工作中現(xiàn)出許多短板造锅,所以希望通過這個連載讀書筆記可以有所改進(jìn)。
第一課的只是主要講了兩方面知識廉邑,MVC和Introduction of Object-c
0.what's in ?iOS
Core OS 核心操作系統(tǒng)層哥蔚,最接近硬件的一層 Unix內(nèi)核
Core Services 核心服務(wù)層倒谷,OS之上的面向?qū)ο蟮囊粚?/p>
Media ?現(xiàn)有開發(fā)過程中接觸較少,后續(xù)待研糙箍。
Cocoa Touch ?即UI層渤愁,Cocoa存在很久的一項(xiàng)技術(shù),最初是用來給Mac OS系統(tǒng)設(shè)計(jì)的一套API深夯,后來iPhone的出現(xiàn)抖格,出現(xiàn)這個版本,兩個平臺之間很多API是可以共用的咕晋。
1.MVC
在之前學(xué)習(xí)JAVA的時候雹拄,就已經(jīng)接觸過,三個陣營不需要贅述掌呜,其中最重要的部分其實(shí)是在三者之間的通信方式
Controller-->Model ?C需要知道M的一切并且需要要有同M完全的通信能力办桨,但是注意箭頭是單向的。
Controller-->View ?之間的綠色箭頭站辉,通信同上呢撞,控制器指向視圖時候用接口outlet。
View-->Controller ?可以通信饰剥,但是必須小心殊霞,1.action-target模式(待深究),列子:view上面的滑動條汰蓉。2.delegate绷蹲,滾動視圖本省沒有足夠的邏輯去知道答案(should,will顾孽,did)祝钢,于是將解答這些問題的權(quán)利委托給其他對象,不知道這個對象若厚,只知道這種對象能夠回答這類問題拦英。3.另一種特殊的委托(data source)待深究
Model-->Controller ?Model的變更如何通知Controller,比如使用的是一種網(wǎng)絡(luò)數(shù)據(jù)庫测秸,有人修改了網(wǎng)絡(luò)數(shù)據(jù)庫疤估,如何通知C。Notification&KVO 出耄看到的詞匯铃拇,類似消息通知,類似的還有RAC沈撞,待深究慷荔。
Model和View之間保持完全獨(dú)立。
總結(jié):三大陣營的工作流程是這樣的:controller去model那取數(shù)據(jù)缠俺,告訴view展現(xiàn)數(shù)據(jù)在屏幕上显晶。即使只有一行代碼贷岸,也得有controller來參與,不能壞了規(guī)矩吧碾。model不能主動勾搭controller,那model數(shù)據(jù)有變化了墓卦,那怎么讓controller知道呢倦春?Notification 或KVO機(jī)制。當(dāng)model數(shù)據(jù)改變落剪,它就廣播睁本,controller就收到了
2.Introduction of Object-C
objective-c是c的超集,import 的使用類似于C的include忠怖,@property替代了原來類里的實(shí)例變量呢堰,當(dāng)然實(shí)例變量也可以使用,@property幫你自動生成getter 和setter凡泣,@property之后就可以用點(diǎn)號 self.topSpeed訪問變量了枉疼,相當(dāng)于[self topSpeed]
.h中是公共API,類中你所希望具有的公共性質(zhì)鞋拟,其他類可以調(diào)用的
.m里是私有的以及你所有的實(shí)現(xiàn)
實(shí)例變量的理解 Foundation NSObject ?ObjectC中的所有對象都在堆(分配閑置內(nèi)存的地方)中骂维,有指針指向它們,如何分配內(nèi)存
strong 指針的屬性,保持對這個存儲在堆中指針?biāo)傅臇|西贺纲,只要我和其他任何有一個強(qiáng)指針指向它航闺,那么會保持存在,只要不再有強(qiáng)指針指向它猴誊,內(nèi)存就會釋放潦刃。這種可預(yù)見性的內(nèi)存管理方式,較之java的垃圾收集機(jī)制要好很多懈叹,稱之為自動引用計(jì)數(shù)
weak ?相對于strong類型的指針乖杠,出現(xiàn)以上情況的時候,會被置為nil澄成,也就是常說的空指針滑黔,不指向任何東西,不僅釋放內(nèi)存环揽,而且指針被設(shè)置為nil
nonatomic 非原子性略荡,不能有兩個線程,同時嘗試設(shè)置該屬性歉胶,不線程安全汛兜。ios里的多線程,不是一個對象上多個線程在設(shè)置通今,粥谬,通常是另外一組對象肛根,運(yùn)行在另外一個線程,UI專門運(yùn)行在UI線程漏策,Model在自己的線程派哲,他們之間在線程間通信
BOOL 不需要強(qiáng)弱來修飾,因?yàn)樗麄兪窃碱愋筒粲鳎]有存儲在堆中芭届,只是整形或者浮點(diǎn)型,沒有內(nèi)存需要管理感耙,所以不設(shè)計(jì)到指針
視頻觀看地址:http://open.163.com/special/opencourse/ios7.html ?當(dāng)前頁面有所有課件下載鏈接褂乍,聰明的你一定可以看到的。