OC基礎(chǔ)

IOS 開發(fā)面試必備技能圖.png

什么是對(duì)象 ,OC中的對(duì)象有哪些奥此?

對(duì)象是類的實(shí)例;是通過一個(gè)類創(chuàng)建出來的實(shí)例雁比,一般稱之為實(shí)例對(duì)象稚虎;OC中的常見對(duì)象有實(shí)例對(duì)象、類對(duì)象偎捎、元類對(duì)象蠢终;

什么是類?什么是元類鸭限?類對(duì)象和類蜕径,元類對(duì)象和元類有什么區(qū)別?

類: 是面向?qū)ο蟪绦蛟O(shè)計(jì)(OOP败京,Object-Oriented Programming)實(shí)現(xiàn)信息封裝的基礎(chǔ)。類是一種用戶定義的引用數(shù)據(jù)類型梦染,也稱類類型赡麦。每個(gè)類包含數(shù)據(jù)說明和一組操作數(shù)據(jù)或傳遞消息的函數(shù)。類的實(shí)例稱為對(duì)象
元類:以類作為其實(shí)例的類帕识;
類對(duì)象:類本身也是一個(gè)對(duì)象泛粹,所以就有類對(duì)象;類對(duì)象可以通過實(shí)例對(duì)象的ISA指針獲得
元類對(duì)象:元類本身也是一個(gè)對(duì)象肮疗,所以就有元類對(duì)象晶姊;元類對(duì)象可以通過類對(duì)象的ISA指針獲得
區(qū)分二者:

  • 類、元類是面向?qū)ο缶幊讨械囊环N類型
  • 類對(duì)象伪货、元類對(duì)象是一種對(duì)象

什么是分類们衙?

分類也是一個(gè)類钾怔,其底層結(jié)構(gòu)和類稍有不同;給分類添加的方法會(huì)在runtime 讀取鏡像蒙挑,加載可執(zhí)行文件(_read_images)之后, 執(zhí)行remethodizeClass合并到原有類的方法列表(二維數(shù)組)中
分類多用來給類做擴(kuò)展使用宗侦;在OC開發(fā)中應(yīng)用廣泛


分類.png

什么是類擴(kuò)展?
類擴(kuò)展:用來給類擴(kuò)充私有屬性忆蚀、方法

什么是數(shù)組矾利?
數(shù)組可表示為占用一塊連續(xù)的內(nèi)存空間用來存儲(chǔ)元素的數(shù)據(jù)結(jié)構(gòu);OC中的數(shù)組有可變和不可變兩種馋袜;可變數(shù)組做了優(yōu)化利用環(huán)形緩沖區(qū)技術(shù)提高增刪改查時(shí)的性能

什么是字典男旗?
字典以鍵值的形式存儲(chǔ)數(shù)據(jù),底層實(shí)現(xiàn)是哈希表欣鳖;OC對(duì)象作為可變字典的Key需要遵守NSCopying協(xié)議并且實(shí)現(xiàn)hash和isEqual兩個(gè)方法察皇。比如:NSNumber、NSArray 观堂、NSDictionary让网、自定義OC對(duì)象 都可以作為key

什么是集合?
集合是一種用來存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)师痕,內(nèi)部存儲(chǔ)的數(shù)據(jù)時(shí)無序的溃睹,其他和數(shù)組相同

OC語法有哪些?
OC中的語法有點(diǎn)語法.,這里的點(diǎn)一般轉(zhuǎn)化為setter胰坟、getter方法調(diào)用

什么是Method因篇?
Method是method_t的結(jié)構(gòu)體,是對(duì)一個(gè)方法的描述:

struct method_t{
SEL name;              //函數(shù)名/方法名
const char *types;//編碼(返回值類型笔横、參數(shù)類型)
IMP imp;                //指向函數(shù)的指針(函數(shù)地址)
}

什么是內(nèi)斂函數(shù)竞滓?

  • 內(nèi)聯(lián)函數(shù)基本概念
    在c++中,預(yù)定義宏的概念是用內(nèi)聯(lián)函數(shù)來實(shí)現(xiàn)的吹缔,而內(nèi)聯(lián)函數(shù)本身也是一個(gè)真正的函數(shù)商佑。內(nèi)聯(lián)函數(shù)具有普通函數(shù)的所有行為。唯一不同之處在于內(nèi)聯(lián)函數(shù)會(huì)在適當(dāng)?shù)牡胤较耦A(yù)定義宏一樣展開厢塘,所以不需要函數(shù)調(diào)用的開銷茶没。因此應(yīng)該不使用宏,使用內(nèi)聯(lián)函數(shù)晚碾。

在普通函數(shù)(非成員函數(shù))函數(shù)前面加上inline關(guān)鍵字使之成為內(nèi)聯(lián)函數(shù)抓半。但是必須注意必須函數(shù)體和聲明結(jié)合在一起,否則編譯器將它作為普通函數(shù)來對(duì)待格嘁。

inline void func(int a);

以上寫法沒有任何效果笛求,僅僅是聲明函數(shù),應(yīng)該如下方式來做:

inline int func(int a){return ++;}

注意: 編譯器將會(huì)檢查函數(shù)參數(shù)列表使用是否正確,并返回值(進(jìn)行必要的轉(zhuǎn)換)探入。

這些事預(yù)處理器無法完成的狡孔。
內(nèi)聯(lián)函數(shù)的確占用空間,但是內(nèi)聯(lián)函數(shù)相對(duì)于普通函數(shù)的優(yōu)勢(shì)只是省去了函數(shù)調(diào)用時(shí)候的壓棧新症,跳轉(zhuǎn)步氏,返回的開銷。我們可以理解為內(nèi)聯(lián)函數(shù)是以空間換時(shí)間徒爹。

  • 類內(nèi)部的內(nèi)聯(lián)函數(shù)

    為了定義內(nèi)聯(lián)函數(shù)荚醒,通常必須在函數(shù)定義前面放一個(gè)inline關(guān)鍵字。但是在類內(nèi)部定義內(nèi)聯(lián)函數(shù)時(shí)并不是必須的隆嗅。任何在類內(nèi)部定義的函數(shù)自動(dòng)成為內(nèi)聯(lián)函數(shù)界阁。

什么是構(gòu)造函數(shù)?
在一個(gè)類中定義一個(gè)和類名相同的函數(shù)胖喳,這個(gè)函數(shù)就是構(gòu)造函數(shù)

面向?qū)ο蟮脑O(shè)計(jì)原則是什么 泡躯?
單一責(zé)任原則開閉原則丽焊、接口隔離原則较剃、依賴倒置原則里式替換原則技健、迪米特原則

  • 單一責(zé)任原則
    一個(gè)類只負(fù)責(zé)一件事情写穴,CALayer只負(fù)責(zé)動(dòng)畫和視圖的顯示,UIView只負(fù)責(zé)事件的傳遞雌贱、事件的響應(yīng)
  • 開閉原則
    對(duì)修改關(guān)閉啊送,對(duì)擴(kuò)展開放; 要考慮API的后續(xù)擴(kuò)展欣孤,而不是在原有基礎(chǔ)上來回修改
  • 接口隔離原則
    使用多協(xié)議的方式來定義接口馋没,而不是一個(gè)臃腫的協(xié)議;比如delagate, datesource
  • 依賴倒置原則
    抽象不應(yīng)該依賴具體實(shí)現(xiàn)降传,具體實(shí)現(xiàn)依賴于抽象
  • 里式替換原則
    父類和子類無縫銜接篷朵,且原有功能不受影響;比如:KVO, 用完就走不留痕跡
  • 迪米特原則
    高內(nèi)聚婆排,低耦合

面向?qū)ο笳Z言的三大特性是什么 款票?
封裝、繼承泽论、多態(tài)

OC的繼承體系


OC的繼承體系.png

關(guān)鍵字的使用標(biāo)準(zhǔn)?
ARC環(huán)境修飾OC對(duì)象用strong卡乾、copy翼悴、weak,修飾基本數(shù)據(jù)類型用assign;
靜態(tài)變量用static, 修飾為常量用const
關(guān)鍵字

常用設(shè)計(jì)模式?

設(shè)計(jì)模式分為四類:結(jié)構(gòu)型模式鹦赎、創(chuàng)建型模式谍椅、行為型模式、軟件設(shè)計(jì)原則

常用的結(jié)構(gòu)型模式有:代理古话、裝飾
常用的創(chuàng)建型模式有:?jiǎn)卫浴⒐S
常用的行為型模式有:觀察者、發(fā)布訂閱模式

代理:是一種消息傳遞方式陪踩,一個(gè)完整的代理模式包括:委托對(duì)象杖们、代理對(duì)象和協(xié)議。

  • 請(qǐng)代理三部曲:
    1 定義代理協(xié)議
    2 聲明delegate對(duì)象
    3 調(diào)用代理方法
  • 當(dāng)別人代理的三部曲
    1 遵循協(xié)議
    2 設(shè)置代理
    3 實(shí)現(xiàn)方法

裝飾:動(dòng)態(tài)地給一個(gè)類添加一些額外的職責(zé)肩狂;Category 就是實(shí)現(xiàn)了裝飾的設(shè)計(jì)模式摘完;Category是一個(gè)特殊的類,通過它可以給類添加方法的接口與實(shí)現(xiàn)傻谁;
觀察者:包含通知和KVO
單利:?jiǎn)危何ㄒ恍⒅危簩?shí)例;即唯一的一個(gè)實(shí)例审磁,該實(shí)例自創(chuàng)建開始到程序退出由系統(tǒng)自動(dòng)釋放谈飒;單利常被當(dāng)做共有類使用;

系統(tǒng)常見單利類
UIApplication(應(yīng)用程序?qū)嵗?
NSNotificationCenter(消息中心類)
NSFileManager(文件管理類)
NSUserDefaults(應(yīng)用程序設(shè)置)
NSURLCache(請(qǐng)求緩存類)
NSHTTPCookieStorage(應(yīng)用程序cookies池)

工廠模式:分為簡(jiǎn)單工廠模式态蒂、工廠模式杭措、抽象工廠模式
簡(jiǎn)單工廠模式:簡(jiǎn)單工廠模式是由一個(gè)工廠對(duì)象決定創(chuàng)建出哪一種產(chǎn)品類的實(shí)例。簡(jiǎn)單工廠模式是工廠模式家族中最簡(jiǎn)單實(shí)用的模式吃媒,可以理解為是不同工廠模式的一個(gè)特殊實(shí)現(xiàn)瓤介。
工廠模式:抽象了工廠接口的具體產(chǎn)品,應(yīng)用程序的調(diào)用不同工廠創(chuàng)建不同產(chǎn)品對(duì)象赘那。(抽象產(chǎn)品)
抽象工廠模式:在工廠模式的基礎(chǔ)上抽象了工廠刑桑,應(yīng)用程序調(diào)用抽象的工廠發(fā)發(fā)創(chuàng)建不同產(chǎn)品對(duì)象。(抽象產(chǎn)品+抽象工廠)

懶加載:把初始化邏輯通過重寫的方式封裝起來募舟,到需要時(shí)直接調(diào)用的方式
懶加載的優(yōu)點(diǎn)

  • 相對(duì)來說祠斧,如果代碼量不是很多,可讀性略強(qiáng)
  • 相對(duì)來說拱礁,防止為nil琢锋,減少了后續(xù)使用時(shí)安全檢查的后顧之憂
  • 使用適當(dāng),可節(jié)省內(nèi)存資源
  • 一定程度上呢灶,節(jié)省了某一個(gè)期間內(nèi)的時(shí)間
  • 使用得當(dāng)吴超,優(yōu)化性能,提高用戶體驗(yàn)
    懶加載的缺點(diǎn)
  • 使用太泛濫鸯乃,導(dǎo)致可讀性變差
  • 使用不得當(dāng)鲸阻,可能會(huì)造成死循環(huán),導(dǎo)致crash
  • 代碼量增多(每增加一個(gè)懶加載,代碼會(huì)平均多出3-4行)

什么時(shí)候使用懶加載鸟悴?

一般情況下陈辱,不需要使用懶加載,懶加載未必能增強(qiáng)可讀性细诸、獨(dú)立性沛贪,濫用反而讓可讀性適得其反。簡(jiǎn)言之震贵,就是在邏輯上利赋,覺得現(xiàn)在不需要加載,而在后面某一時(shí)間段內(nèi)可能會(huì)加載屏歹,就可以考慮懶加載

生產(chǎn)者消費(fèi)者:
在編碼中隐砸,有時(shí)會(huì)遇到一個(gè)模塊產(chǎn)生數(shù)據(jù),另外一個(gè)模塊處理數(shù)據(jù)的情況蝙眶,不論是為了模塊間的結(jié)偶或是并發(fā)處理還是忙閑不均季希,我們都會(huì)在產(chǎn)生和處理數(shù)據(jù)的模塊之間放置緩存區(qū),作為生產(chǎn)和處理數(shù)據(jù)的倉庫幽纷。以上的模型就是生產(chǎn)者消費(fèi)者模型
生產(chǎn)者-消費(fèi)者

中介者:

  • 中介者模式又叫做調(diào)停者模式式塌,其實(shí)就是中間人或者調(diào)停者的意思
  • 概念:中介者模式(Mediator),用一個(gè)中介者對(duì)象來封裝一系列的對(duì)象交互。中介者使各個(gè)對(duì)象不需要顯式地相互引用友浸,從而使其耦合松散峰尝,而且可 以獨(dú)立地改變他們之間的交互
  • UINavigationViewController就是屬于一個(gè)中介者
  • 中介者模式的優(yōu)缺點(diǎn)
    中介者模式很容易在系統(tǒng)中應(yīng)用,也很容易在系統(tǒng)中誤用收恢。當(dāng)系統(tǒng)出現(xiàn)了多對(duì)多交互復(fù)雜的對(duì)象群時(shí)武学,不要急于使用中介者模式,而要先反思你在系統(tǒng)上設(shè)計(jì)是否合理伦意。
    優(yōu)點(diǎn)就是集中控制火窒,減少了對(duì)象之間的耦合度。缺點(diǎn)就是太過于集中
  • 應(yīng)用場(chǎng)景
    對(duì)象間的交互雖定義明確然而非常復(fù)雜驮肉,導(dǎo)致一組對(duì)象彼此相互依賴而且難以理解熏矿。
    因?yàn)閷?duì)象引用了許多其他對(duì)象并與其通信,導(dǎo)致對(duì)象難以復(fù)用离钝。
    想要定制一個(gè)分布在多個(gè)類中的邏輯或者行為票编,又不想生成太多子類

發(fā)布訂閱模式

其實(shí)基本的設(shè)計(jì)模式中并沒有發(fā)布訂閱模式,上面也說了卵渴,他只是觀察者模式的一個(gè)別稱慧域。但是經(jīng)過時(shí)間的沉淀,似乎他已經(jīng)強(qiáng)大了起來浪读,已經(jīng)獨(dú)立于觀察者模式吊趾,成為另外一種不同的設(shè)計(jì)模式宛裕。
在現(xiàn)在的發(fā)布訂閱模式中,稱為發(fā)布者的消息發(fā)送者不會(huì)將消息直接發(fā)送給訂閱者论泛,這意味著發(fā)布者和訂閱者不知道彼此的存在。在發(fā)布者和訂閱者之間存在第三個(gè)組件蛹屿,稱為消息代理或調(diào)度中心或中間件屁奏,它維持著發(fā)布者和訂閱者之間的聯(lián)系,過濾所有發(fā)布者傳入的消息并相應(yīng)地分發(fā)它們給訂閱者错负。

舉一個(gè)例子坟瓢,你在微博上關(guān)注了A,同時(shí)其他很多人也關(guān)注了A犹撒,那么當(dāng)A發(fā)布動(dòng)態(tài)的時(shí)候折联,微博就會(huì)為你們推送這條動(dòng)態(tài)。A就是發(fā)布者识颊,你是訂閱者诚镰,微博就是調(diào)度中心,你和A是沒有直接的消息往來的祥款,全是通過微博來協(xié)調(diào)的(你的關(guān)注清笨,A的發(fā)布動(dòng)態(tài)

觀察者模式和發(fā)布訂閱模式有什么區(qū)別?

觀察者模式: 觀察者(Observer)直接訂閱(Subscribe)主題(Subject)刃跛,而當(dāng)主題被激活的時(shí)候抠艾,會(huì)觸發(fā)(Fire Event)觀察者里的事件。

發(fā)布訂閱模式: 訂閱者(Subscriber)把自己想訂閱的事件注冊(cè)(Subscribe)到調(diào)度中心(Topic)桨昙,當(dāng)發(fā)布者(Publisher)發(fā)布該事件(Publish topic)到調(diào)度中心检号,也就是該事件觸發(fā)時(shí),由調(diào)度中心統(tǒng)一調(diào)度(Fire Event)訂閱者注冊(cè)到調(diào)度中心的處理代碼蛙酪。常見的是用協(xié)議的方式來做

  • 觀察者模式是不是發(fā)布訂閱模式

網(wǎng)上關(guān)于這個(gè)問題的回答齐苛,出現(xiàn)了兩極分化,有認(rèn)為發(fā)布訂閱模式就是觀察者模式的滤否,也有認(rèn)為觀察者模式和發(fā)布訂閱模式是真不一樣的脸狸。

其實(shí)我不知道發(fā)布訂閱模式是不是觀察者模式,就像我不知道辨別模式的關(guān)鍵是設(shè)計(jì)意圖還是設(shè)計(jì)結(jié)構(gòu)(理念)藐俺,雖然《JavaScript設(shè)計(jì)模式與開發(fā)實(shí)踐》一書中說了分辨模式的關(guān)鍵是意圖而不是結(jié)構(gòu)炊甲。

如果以結(jié)構(gòu)來分辨模式,發(fā)布訂閱模式相比觀察者模式多了一個(gè)中間件訂閱器欲芹,所以發(fā)布訂閱模式是不同于觀察者模式的卿啡;如果以意圖來分辨模式,他們都是實(shí)現(xiàn)了對(duì)象間的一種一對(duì)多的依賴關(guān)系菱父,當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí)颈娜,所有依賴于它的對(duì)象都將得到通知剑逃,并自動(dòng)更新,那么他們就是同一種模式官辽,發(fā)布訂閱模式是在觀察者模式的基礎(chǔ)上做的優(yōu)化升級(jí)蛹磺。

不過,不管他們是不是同一個(gè)設(shè)計(jì)模式同仆,他們的實(shí)現(xiàn)方式確實(shí)有差別萤捆,我們?cè)谑褂玫臅r(shí)候應(yīng)該根據(jù)場(chǎng)景來判斷選擇哪個(gè)

block

  • block是封裝了函數(shù)調(diào)用和函數(shù)調(diào)用環(huán)境的OC對(duì)象,block分為3種類型:NSGlobalBlock俗批、NSStackBlock俗或、NSMallocBlock; 其都繼承自NSBlock,NSBlock 繼承自NSObject岁忘;
  • block使用需注意循環(huán)引用問題辛慰;一般需要使用強(qiáng)弱引用、__block來解決問題
  • block聲明為屬性時(shí)需要使用copy或strong來修飾干像;因?yàn)閎lock最初是被分配在椝щ纾空間,內(nèi)存由系統(tǒng)管理蝠筑;但一般使用block是需要在運(yùn)行時(shí)的某一個(gè)時(shí)機(jī)使用狞膘,所以需要開發(fā)者自己管理block的內(nèi)存,使用copy和strong修飾會(huì)把block的內(nèi)存復(fù)制到堆空間,這樣就達(dá)到了自己管理內(nèi)存的目的

為什么block一開始的內(nèi)存會(huì)被分配在棧空間挟炬?
block使用會(huì)有兩種情況:局部變量箫爷、typedef聲明
局部變量申請(qǐng)的內(nèi)存肯定在棧空間

對(duì)象的本質(zhì)?
對(duì)象的本質(zhì)是結(jié)構(gòu)體;
內(nèi)存分配原理:以16個(gè)字節(jié)為單位且遵循了內(nèi)存對(duì)齊原則向堆內(nèi)存申請(qǐng)內(nèi)存空間

isa指針?
isa指針是OC對(duì)象的第一個(gè)成員變量点待;isa是一個(gè)聯(lián)合體結(jié)構(gòu),通過位域來存儲(chǔ)數(shù)據(jù)弃舒;
isa最重要的作用是用于消息發(fā)送癞埠;

位域宏定義(真機(jī)環(huán)境arm64)
# if __arm64__
#   define ISA_MASK        0x0000000ffffffff8ULL
#   define ISA_MAGIC_MASK  0x000003f000000001ULL
#   define ISA_MAGIC_VALUE 0x000001a000000001ULL
#   define ISA_BITFIELD                                                      \
     uintptr_t nonpointer        : 1; 拿二進(jìn)制的1位來存儲(chǔ)  \
     uintptr_t has_assoc         : 1;                                       \
     uintptr_t has_cxx_dtor      : 1;                                       \
     uintptr_t shiftcls          : 33; /*MACH_VM_MAX_ADDRESS 0x1000000000*/ \
     uintptr_t magic             : 6;                                       \
     uintptr_t weakly_referenced : 1;                                       \
     uintptr_t deallocating      : 1;                                       \
     uintptr_t has_sidetable_rc  : 1;                                       \
     uintptr_t extra_rc          : 19
#   define RC_ONE   (1ULL<<45)
#   define RC_HALF  (1ULL<<18)

OC的內(nèi)存管理原則 ?
OC中內(nèi)存管理是通過引用計(jì)數(shù)管理實(shí)現(xiàn)的聋呢,當(dāng)一個(gè)對(duì)象的引用計(jì)數(shù)為0時(shí)就會(huì)進(jìn)入釋放流程苗踪;ARC利用LLVM編譯器動(dòng)態(tài)的在合適的位置添加內(nèi)存管理代碼的方式幫助開發(fā)者管理內(nèi)存,同時(shí)又通過runtime管理weak修飾的弱引用表削锰;基本實(shí)現(xiàn)了不用開發(fā)者關(guān)心內(nèi)存問題就可以進(jìn)行開發(fā)通铲;

  • block、定時(shí)器時(shí)需要注意循環(huán)引用問題
  • 聲明屬性時(shí)需要注意強(qiáng)弱引用的使用

多線程器贩?

multithreading , 是指從軟件或者硬件上實(shí)現(xiàn)多個(gè)線程并發(fā)執(zhí)行的技術(shù)颅夺。
具有多線程能力的計(jì)算機(jī)因有硬件支持而能夠在同一時(shí)間執(zhí)行多于一個(gè)線程朋截,進(jìn)而提升整體處理性能。具有這種能力的系統(tǒng)包括對(duì)稱多處理機(jī)吧黄、多核心處理器以及芯片級(jí)多處理(Chip-level multithreading)或同時(shí)多線程(Simultaneous multithreading)處理器部服。在一個(gè)程序中,這些獨(dú)立運(yùn)行的程序片段叫作“線程”(Thread)稚字,利用它編程的概念就叫作“多線程處理(Multithreading)”饲宿。
多線程的調(diào)度原理可以認(rèn)為是:時(shí)間片輪轉(zhuǎn)調(diào)度算法,每個(gè)線程都會(huì)分配一個(gè)時(shí)間片然后大家輪著做任務(wù),多線程執(zhí)行時(shí)會(huì)快速切換時(shí)間片來完成多線程任務(wù)的執(zhí)行胆描;其實(shí)操作系統(tǒng)對(duì)進(jìn)程、線程都是按照這種調(diào)度邏輯實(shí)現(xiàn)的

程序仗阅、進(jìn)程昌讲、線程、例程减噪、協(xié)程是什么短绸?

  • 程序:全稱 計(jì)算機(jī)程序(Computer Program),是一組計(jì)算機(jī)能識(shí)別和執(zhí)行的指令筹裕,又稱計(jì)算機(jī)軟件
    是指為了得到某種結(jié)果而可以由計(jì)算機(jī)等具有信息處理能力的裝置執(zhí)行的代碼化指令序列醋闭,用某些程序設(shè)計(jì)語言編寫,如:C朝卒、C++证逻、OC等;它運(yùn)行于電子計(jì)算機(jī)

  • 進(jìn)程:是計(jì)算機(jī)中的程序關(guān)于某數(shù)據(jù)集合上的一次運(yùn)行活動(dòng)抗斤;是獨(dú)立運(yùn)行囚企、獨(dú)立分配資源和獨(dú)立接受調(diào)度的基本單位;是操作系統(tǒng)結(jié)構(gòu)的基礎(chǔ)

在當(dāng)代面向線程設(shè)計(jì)的計(jì)算機(jī)結(jié)構(gòu)中瑞眼,進(jìn)程是線程的容器龙宏。程序是指令、數(shù)據(jù)及其組織形式的描述伤疙,進(jìn)程是程序的實(shí)體

  • 線程:線程是計(jì)算機(jī)調(diào)度的最小單位银酗,用來處理不同的任務(wù);

  • 例程:即函數(shù)徒像,一個(gè)函數(shù)就可以看做是一個(gè)例程

  • 協(xié)程:利用單線程執(zhí)行多任務(wù)的技術(shù)解決方案黍特,性能上避免線程間切換要優(yōu)于線程調(diào)度;是線程的更小拆分厨姚,又稱之為“微線程”衅澈,是一種用戶太的輕量級(jí)線程;
    和線程的區(qū)別:
    線程是系統(tǒng)級(jí)別的谬墙,它們由操作系統(tǒng)調(diào)度今布;同時(shí)是可被調(diào)度的最小單位经备;
    協(xié)程則是程序級(jí)別的,由程序員根據(jù)需要自己調(diào)度
    子程序:函數(shù)
    在一個(gè)線程中會(huì)有很多子程序部默,在子程序執(zhí)行過程中可以中斷去執(zhí)行別的子程序侵蒙,而別的子程序也可以中斷回來繼續(xù)執(zhí)行之前的子程序,這個(gè)過程及稱為協(xié)程傅蹂。也就是說在同一線程內(nèi)一段代碼在執(zhí)行過程中會(huì)中斷然后跳轉(zhuǎn)執(zhí)行別的代碼纷闺,接著在之前中斷的地方繼續(xù)開始執(zhí)行,類似于yield操作

實(shí)例的生命周期?

  • alloc份蝴、new犁功、copy、mutableCopy
  • 引用計(jì)數(shù)變化
  • 引用計(jì)數(shù)為0
  • dealloc

控制器的生命周期?
控制器的聲明周期

響應(yīng)者鏈條?

完整的觸摸事件傳遞過程

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末婚夫,一起剝皮案震驚了整個(gè)濱河市浸卦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌案糙,老刑警劉巖限嫌,帶你破解...
    沈念sama閱讀 221,406評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異时捌,居然都是意外死亡怒医,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門奢讨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來稚叹,“玉大人,你說我怎么就攤上這事禽笑∪肼迹” “怎么了?”我有些...
    開封第一講書人閱讀 167,815評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵佳镜,是天一觀的道長(zhǎng)僚稿。 經(jīng)常有香客問我,道長(zhǎng)蟀伸,這世上最難降的妖魔是什么蚀同? 我笑而不...
    開封第一講書人閱讀 59,537評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮啊掏,結(jié)果婚禮上蠢络,老公的妹妹穿的比我還像新娘。我一直安慰自己迟蜜,他們只是感情好刹孔,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,536評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著娜睛,像睡著了一般髓霞。 火紅的嫁衣襯著肌膚如雪卦睹。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,184評(píng)論 1 308
  • 那天方库,我揣著相機(jī)與錄音结序,去河邊找鬼。 笑死纵潦,一個(gè)胖子當(dāng)著我的面吹牛徐鹤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播邀层,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼返敬,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了寥院?” 一聲冷哼從身側(cè)響起救赐,我...
    開封第一講書人閱讀 39,668評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎只磷,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體泌绣,經(jīng)...
    沈念sama閱讀 46,212評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡钮追,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,299評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了阿迈。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片元媚。...
    茶點(diǎn)故事閱讀 40,438評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖苗沧,靈堂內(nèi)的尸體忽然破棺而出刊棕,到底是詐尸還是另有隱情,我是刑警寧澤待逞,帶...
    沈念sama閱讀 36,128評(píng)論 5 349
  • 正文 年R本政府宣布甥角,位于F島的核電站,受9級(jí)特大地震影響识樱,放射性物質(zhì)發(fā)生泄漏嗤无。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,807評(píng)論 3 333
  • 文/蒙蒙 一怜庸、第九天 我趴在偏房一處隱蔽的房頂上張望当犯。 院中可真熱鬧,春花似錦割疾、人聲如沸嚎卫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拓诸。三九已至侵佃,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間恰响,已是汗流浹背趣钱。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留胚宦,地道東北人首有。 一個(gè)月前我還...
    沈念sama閱讀 48,827評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像枢劝,于是被迫代替她去往敵國和親井联。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,446評(píng)論 2 359

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

  • 前言: 最近公司項(xiàng)目不怎么忙, 閑暇時(shí)間把iOS 在面試中可能會(huì)遇到的問題整理了一番, 一部分題目是自己面試遇到...
    Leon_520閱讀 9,848評(píng)論 2 47
  • Effective Objective-C 一您旁、熟悉Objective-C 1. 了解Objective-C的起源...
    王二姐李三娘閱讀 481評(píng)論 0 1
  • 一烙常、內(nèi)存管理 1. 引用計(jì)數(shù) OC類中實(shí)現(xiàn)了引用計(jì)數(shù)器,對(duì)象知道自己當(dāng)前被引用的次數(shù)鹤盒。 對(duì)象初始化時(shí)計(jì)數(shù)器為1蚕脏,每...
    邢羅康閱讀 1,355評(píng)論 0 3
  • 前言:面試筆試都是必考語法知識(shí)點(diǎn)。請(qǐng)認(rèn)真復(fù)習(xí)和深入研究OC侦锯。 目錄:iOS-面試題-OC基礎(chǔ)篇 (1) - (84...
    麥穗0615閱讀 4,261評(píng)論 0 33
  • 1.關(guān)于方法的執(zhí)行順序問題驼鞭,代碼示例如下: dispatch_after 第二個(gè)參數(shù)為0,可以理解為在當(dāng)前時(shí)刻向主...
    oc123閱讀 866評(píng)論 0 0