iOS學(xué)習(xí)筆記--OC--GeekBand(1)

1.Objective-C編程語言(第一周)

OC基本介紹及特性

?在C語言的基礎(chǔ)上做了面向?qū)ο蟮臄U(kuò)展斧抱;

通過LLVM編譯器架構(gòu)支持與swift語言雙向相互操作婿牍。

程序員的兩種思維方法

底層思維:向下,如何從機(jī)器底層理解對(duì)象構(gòu)造;包含語言構(gòu)造,編譯轉(zhuǎn)換,內(nèi)存模型卧抗,運(yùn)行時(shí)機(jī)制的理解。

抽象思維:向上鳖粟,把周圍世界抽象為有組織的工程代碼社裆;包含面向?qū)ο螅M件封裝向图,設(shè)計(jì)模式泳秀,架構(gòu)模式的理解。

“時(shí)空人”三位一體分析法:

對(duì)時(shí)間的分析:發(fā)生在什么時(shí)候张漂? compileTime or runTime?

對(duì)空間分析:在哪里晶默?stack or heap?

對(duì)人物的分析:代碼從哪里來?programmer or compiler/runtime/framework

類和結(jié)構(gòu)的區(qū)別

類-引用類型

? ? 位于棧上的指針+位于堆上的對(duì)象航攒;

結(jié)構(gòu)-值類型

? ? 位于棧上的值

棧(stack)和堆(heap)的區(qū)別

棧:存儲(chǔ)值類型

? ? ? 1.無ARC負(fù)擔(dān)磺陡,由系統(tǒng)自動(dòng)管理,以執(zhí)行函數(shù)為單位漠畜;

? ? ? 2.空間大小在編譯時(shí)確定(參數(shù)+局部變量)

? ? ? 3.函數(shù)執(zhí)行時(shí)币他,系統(tǒng)自動(dòng)分配分配一個(gè)stack

? ? ? 4.函數(shù)執(zhí)行結(jié)束,系統(tǒng)自動(dòng)回收stack

? ? ? 5.函數(shù)之間通過拷貝值傳遞

? ? ? 6.具有局部性憔狞,大小由限額蝴悉,超過會(huì)stack overflow

堆:存儲(chǔ)引用類型對(duì)象

? ? ? ?1.分配由程序員手動(dòng)請(qǐng)求(創(chuàng)建對(duì)象時(shí))

? ? ? ? 2.釋放由運(yùn)行時(shí)ARC機(jī)制自動(dòng)釋放(確定時(shí))

? ? ? ? 3.函數(shù)之間通過拷貝引用(指針)傳遞

? ? ? ? 4.具有全局性,總體大小無限制(受制于系統(tǒng)內(nèi)存大旭摇)

屬性(property)

編譯器會(huì)為屬性propertyName自動(dòng)合成以下三個(gè)東西:

getter訪問器方法:propertyName;

setter訪問器方法:setPropertyName;

實(shí)例變量:_propertyName;

屬性的描述特性

1.讀寫特性(readonly/readwrite)

2.內(nèi)存管理特性(strong/weak/copy)

3.多線程特性(atomic/nonatomic)

實(shí)例變量

跟隨對(duì)象實(shí)例存儲(chǔ)在堆上拍冠;

值類型實(shí)例變量直接“內(nèi)嵌”在對(duì)象實(shí)例中尿这,跟隨對(duì)象實(shí)例的內(nèi)存釋放而釋放;

引用型實(shí)例變量通過指針引用堆上的引用類型實(shí)例庆杜,ARC針對(duì)引用進(jìn)行計(jì)數(shù)管理射众,釋放引用計(jì)數(shù)為0的對(duì)象。

方法

OC里面的方法調(diào)用可以看做是向?qū)ο蟀l(fā)送消息晃财;

在編譯時(shí)叨橱,對(duì)象的頭部有一個(gè)指針指向Class,里面有個(gè)存儲(chǔ)方法列表地址的指針(methodLists),對(duì)象的所有方法的入口點(diǎn)地址都在此指針指向的方法列表上断盛。

因此罗洗,實(shí)例方法的動(dòng)態(tài)調(diào)用機(jī)制可以讓實(shí)例在調(diào)用方法時(shí),可以不關(guān)注其申明的類型钢猛,只要實(shí)例實(shí)際的類型包含了該方法即可伙菜。

動(dòng)態(tài)調(diào)用的方式由于尋址方式有三步,因此性能會(huì)略有下降厢洞。

實(shí)例方法:表達(dá)的是實(shí)例的行為仇让,可訪問實(shí)例成員、類型方法躺翻、靜態(tài)變量;

方法參數(shù):第一個(gè)參數(shù)名包含在函數(shù)名中卫玖,第二個(gè)參數(shù)名開始公你,需要顯式申明,并且參數(shù)名不同代表的方法不同假瞬。

類方法:表達(dá)類型行為陕靠,只可以訪問類型方法、靜態(tài)變量脱茉;不能訪問實(shí)例成員剪芥。

初始化器和析構(gòu)器

對(duì)象初始化器:常用形式-(id)[[ * alloc]init]?

alloc:1.在堆上分配內(nèi)存;2.將屬性或?qū)嵗兞康膬?nèi)存置0琴许;

init:1.先調(diào)用父類的初始化器[super init]税肪;2.初始化當(dāng)前對(duì)象的實(shí)例變量;

new相當(dāng)于調(diào)用alloc/init的無參數(shù)版本

類型初始化器 +(void)initalize 在每個(gè)類使用前被系統(tǒng)自動(dòng)調(diào)用榜田;

子類的initialise會(huì)自動(dòng)調(diào)用父類的益兄;

對(duì)象析構(gòu)器:-(void)dealloc ?負(fù)責(zé)釋放對(duì)象擁有的動(dòng)態(tài)資源

? ? ? ? ? ? ? ? ? ? 1.ARC將對(duì)象屬性引用計(jì)數(shù)減持;--系統(tǒng)自動(dòng)

? ? ? ? ? ? ? ? ? ? 2.釋放不受ARC管理的動(dòng)態(tài)內(nèi)存箭券;--手動(dòng)

? ? ? ? ? ? ? ? ? ? ?3.關(guān)閉非內(nèi)存資源净捅,如文件句柄,網(wǎng)絡(luò)端口--手動(dòng)

繼承與多態(tài)

面向?qū)ο蟮娜齻€(gè)特性:封裝辩块、繼承蛔六、多態(tài)荆永;

每個(gè)類只能有1個(gè)基類;

繼承的兩層含義:1国章、成員復(fù)用 ? ?子類復(fù)用父類的所有成員具钥;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2、類型抽象 ? 將子類當(dāng)做父類來使用(IS-A關(guān)系)

子類中可以找到與父類一樣的內(nèi)存段捉腥。子類新增的屬性和方法氓拼,都在父類所占堆相同內(nèi)存段的后面添加。

多態(tài):運(yùn)行時(shí)多態(tài)抵碟,同一個(gè)方法桃漾,實(shí)例對(duì)象不同有不同的實(shí)現(xiàn)方法。在運(yùn)行時(shí)拟逮,根據(jù)實(shí)例類型的不同撬统,調(diào)用相應(yīng)的實(shí)例方法。

子類中重寫父類的方法(同名同參)敦迄。

在子類的代碼中恋追,可以使用super來調(diào)用父類的實(shí)現(xiàn)。

? ? ?self具有多態(tài)性罚屋;super不具有多態(tài)性苦囱;

避免在init和dealloc中使用子類重寫的方法。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末脾猛,一起剝皮案震驚了整個(gè)濱河市撕彤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌猛拴,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件职员,死亡現(xiàn)場(chǎng)離奇詭異焊切,居然都是意外死亡倒谷,警方通過查閱死者的電腦和手機(jī)渤愁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門抖格,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人收奔,你說我怎么就攤上這事坪哄◆婕。” “怎么了模暗?”我有些...
    開封第一講書人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵兑宇,是天一觀的道長(zhǎng)粱坤。 經(jīng)常有香客問我,道長(zhǎng)站玄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任测秸,我火速辦了婚禮灾常,結(jié)果婚禮上铃拇,老公的妹妹穿的比我還像新娘慷荔。我一直安慰自己显晶,他們只是感情好磷雇,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開白布唯笙。 她就那樣靜靜地躺著,像睡著了一般少办。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上英妓,一...
    開封第一講書人閱讀 51,370評(píng)論 1 302
  • 那天绍赛,我揣著相機(jī)與錄音蔓纠,去河邊找鬼惹资。 笑死贺纲,一個(gè)胖子當(dāng)著我的面吹牛褪测,可吹牛的內(nèi)容都是我干的猴誊。 我是一名探鬼主播侮措,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼懈叹,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了分扎?” 一聲冷哼從身側(cè)響起澄成,我...
    開封第一講書人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎嫁乘,沒想到半個(gè)月后肾砂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體宏悦,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡源葫,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了息堂。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片芭届。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡储矩,死狀恐怖感耙,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情持隧,我是刑警寧澤即硼,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站屡拨,受9級(jí)特大地震影響只酥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜呀狼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一裂允、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧哥艇,春花似錦绝编、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至祖乳,卻和暖如春逗堵,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背眷昆。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工蜒秤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人亚斋。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓作媚,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親帅刊。 傳聞我的和親對(duì)象是個(gè)殘疾皇子掂骏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法厚掷,內(nèi)部類的語法,繼承相關(guān)的語法级解,異常的語法冒黑,線程的語...
    子非魚_t_閱讀 31,631評(píng)論 18 399
  • 從三月份找實(shí)習(xí)到現(xiàn)在,面了一些公司勤哗,掛了不少抡爹,但最終還是拿到小米、百度芒划、阿里冬竟、京東欧穴、新浪、CVTE泵殴、樂視家的研發(fā)崗...
    時(shí)芥藍(lán)閱讀 42,246評(píng)論 11 349
  • (一)Java部分 1涮帘、列舉出JAVA中6個(gè)比較常用的包【天威誠(chéng)信面試題】 【參考答案】 java.lang;ja...
    獨(dú)云閱讀 7,104評(píng)論 0 62
  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,140評(píng)論 30 470
  • 對(duì)面六樓的陽臺(tái)上 一個(gè)女人探出半個(gè)身子 正細(xì)心謹(jǐn)慎,神情專注地 擦拭著每一塊玻璃 其中的一塊 突然成了自由落體 啪...
    吉林良木閱讀 727評(píng)論 0 2