<<寫給廣大非科班iOS開發(fā)者的一篇面試總結(jié)>>答案

答案來源于網(wǎng)上,非原創(chuàng),如有侵權請聯(lián)系本人

1、如果讓你實現(xiàn)屬性的weak,如何實現(xiàn)的?

答:對于注冊為weak的對象,系統(tǒng)會以weak指向的對象內(nèi)存地址作為key,將之放入到一個hash表之中,當此對象的引用計數(shù)為0時會調(diào)用dealloc,之后遍歷hash表中此key所對應的對象,將之置為nil。按照這個思路,我們可以在dealloc中手動釋放weak屬性,比如執(zhí)行一段block,可以參照 這里

2、如果讓你來實現(xiàn)屬性的atomic,如何實現(xiàn)?

答:聲明為atomic的屬性,系統(tǒng)能保證每一個get或set操作都能順利完成。不論哪個線程調(diào)用了get或者set方法,系統(tǒng)會將這些操作串行執(zhí)行。

假設有一個 atomic 的屬性 "name",如果線程 A 調(diào)[self setName:@"A"],線程 B 調(diào)[self setName:@"B"],線程 C 調(diào)[self name],那么所有這些不同線程上的操作都將依次順序執(zhí)行——也就是說,如果一個線程正在執(zhí)行 getter/setter,其他線程就得等待。因此,屬性 name 是讀/寫安全的。

3、KVO為什么要創(chuàng)建一個子類來實現(xiàn)?

沒找到答案,我覺得應該是為了不影響用戶使用原有類,在用戶看來沒有任何不對的地方。

4、類結(jié)構體的組成,isa指針指向了什么?(這里應該將元類和根元類也說一下)

每個實例對象都包含一個isa變量,屬于Class類型,Class類型==objc_class *。這個isa的指向稱為類對象(就代表一個類,oc同樣視為對象),包含了該實例對象所屬的類的一些信息。每一個類對象又包含兩個Class類型變量,分別為isa、superclass,isa指向元類對象,superclass指向父類對象。

struct objc_class {

Class?isa; ? //指向元類對象

Class?super_class;//指向父類對象

constchar?*name;

long?version;

long?info;

long?instance_size;

struct?objc_ivar_list?*ivars;

struct?objc_method_list?**methodLists;

struct?objc_cache?*cache;

struct?objc_protocol_list?*protocols;

}

見下圖:

5、RunLoop有幾種事件源?有幾種模式?

答:Timer Source和Input Source(包括performSelector*方法簇、Port或者自定義Input Source);

1)NSDefaultRunLoopMode: 默認的運行模式,除了NSConnection對象的事件。

2) NSRunLoopCommonModes: 是一組常用的模式集合,將一個input source關聯(lián)到這個模式集合上,等于將input source關聯(lián)到這個模式集合中的所有模式上。在iOS系統(tǒng)中NSRunLoopCommonMode包含NSDefaultRunLoopMode、NSTaskDeathCheckMode、UITrackingRunLoopMode。

6、方法列表的數(shù)據(jù)結(jié)構是什么?

struct objc_method {

SEL method_name;//?方法名稱

char char*method_typesE;//?參數(shù)和返回類型的描述字串

IMP?method_imp;//?方法的具體的實現(xiàn)的指針

}

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

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

  • 出題者簡介: 孫源(sunnyxx),目前就職于百度,負責百度知道 iOS 客戶端的開發(fā)工作,對技術喜歡刨根問底和...
    戈多_于勒閱讀 1,809評論 0 5
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,923評論 18 139
  • 隨著人生第一塊馬拉松獎牌的到手,盡管只是塊10公里的完賽獎牌,我想,跑步的初級階段已然完成,也是時候?qū)懶〇|西來記錄...
    路邊的三當家閱讀 2,190評論 18 18
  • 公告內(nèi)容【副盟主:E4E7\n贊助者:騎士\n開發(fā)者:AR91招收大量技術人員!請進群歡迎加入新勢力メ新成員審核群...
    米蘭liu閱讀 242評論 0 0
  • #每日500字#Day 14 近一個月里,閨蜜的弟弟因喝酒睡覺窒息去世,同學的爸爸因突發(fā)支氣管出血去世,姐姐宿舍的...
    白米飯兒閱讀 349評論 0 0