iOS 的技術(shù)解釋

這幾天遇到了幾個問題,順手寫下自己的理解,也當(dāng)拋磚引玉了宪郊。

  1. UIButton 引用的 target 是強引用還是弱引用掂恕?那么 NSTimer 呢?
    UIControl 文檔

The control does not retain the object in the target parameter. It is your responsibility to maintain a strong reference to the target object while it is attached to a control.
https://developer.apple.com/documentation/uikit/uicontrol/1618259-addtarget

NSTimer 文檔

The timer maintains a strong reference to this object until it (the timer) is invalidated.

  1. 同步的并行隊列運行是如何的弛槐?
    有序執(zhí)行,同步意味著只有一條線程懊亡,并行意味著任務(wù)按照順序執(zhí)行。所以說有序的乎串。同步阻塞當(dāng)前線程店枣,異步不阻塞當(dāng)前線程。
  2. UITableView 卡頓的解決方案叹誉?
    緩存高度計算鸯两,異步渲染,離屏渲染长豁。
  3. Weak 對象為什么釋放之后自動設(shè)置為 nil 钧唐?

id obj1 = 0;(該語句表示指針為空)
objc_storeWeak(&obj1, obj);
objc_destoryWeak函數(shù)將0作為參數(shù)調(diào)用objc_storeWeak函數(shù)。
objc_storeWeak(&obj1, 0);
前面的代碼與下面的代碼相同蕉斜。
編譯器的模擬代碼:
id obj1;
obj1 = 0;
objc_storeWeak(&obj1, obj);
objc_storeWeak(&obj1, 0);

objc_storeWeak函數(shù)把第二個參數(shù)obj賦值對象的內(nèi)存地址作為鍵值逾柿,將第一個參數(shù)附有__weak修飾變量obj1的內(nèi)存地址注冊到weak表中;如果第二個參數(shù)為0宅此,則把變量obj1的內(nèi)存地址從weak表中刪除。

對象被廢棄的時候會調(diào)用objc_clear_deallocating函數(shù)爬范,該函數(shù)會做如下的處理:

1.從weak表中獲取釋放對象的地址為鍵值的記錄父腕。
2.將包含在記錄中所有附有__weak修飾變量的地址,賦值為nil青瀑。
3.從weak表中刪除該記錄璧亮。
4.從引用計數(shù)表中刪除釋放對象的地址為鍵值的記錄。

http://www.reibang.com/p/050b2d2bc91c

  1. __block 關(guān)鍵字修飾需要被修改的變量的原理是什么斥难?MRC 和 ARC 上有區(qū)別嗎?
    __block 修飾的外部變量引用枝嘶,block 是復(fù)制其引用地址來實現(xiàn)訪問的。ARC 開啟的情況下哑诊,將只會有 NSConcreteGlobalBlock 和 NSConcreteMallocBlock 類型的 block群扶。
  2. 怎么樣能夠一直保持線程?
    手動創(chuàng)建的線程都由開發(fā)人員管理,所以手動建立線程就能保持線程镀裤。
    7.MagicRecord 是如何實現(xiàn)多線程同步的竞阐?
  3. 如何實現(xiàn) KVO 編程?

KVO是基于runtime機制實現(xiàn)的
當(dāng)某個類的屬性對象第一次被觀察時暑劝,系統(tǒng)就會在運行期間動態(tài)地創(chuàng)建該類的一個派生類骆莹,在這個派生類中重寫基類的任何被觀察屬性的setter方法。派生類在被重寫的setter方法內(nèi)實現(xiàn)真正的通知機制
如果原類為Person担猛,那么生成的派生類名為NSKVONotifying_Person
我們知道幕垦,每一個類中都有一個isa指針指向當(dāng)前類丢氢,所有系統(tǒng)就是在當(dāng)一個類的對象第一次被觀察的時候,系統(tǒng)就會偷偷將isa指針指向動態(tài)生成的派生類先改,從而在被監(jiān)聽屬性賦值時被執(zhí)行的是派生類的setter方法
鍵值觀察通知依賴于NSObject 的兩個方法: willChangeValueForKey: 和 didChangevlueForKey:疚察;在一個被觀察屬性發(fā)生改變之前, willChangeValueForKey: 一定會被調(diào)用盏道,這就 會記錄舊的值稍浆。而當(dāng)改變發(fā)生后,didChangeValueForKey: 會被調(diào)用猜嘱,繼而 observeValueForKey:ofObject:change:context: 也會被調(diào)用衅枫。
補充:KVO的這套實現(xiàn)機制中蘋果還偷偷重寫了class方法,讓我們誤認(rèn)為還是使用的當(dāng)前類朗伶,從而達到隱藏生成的派生類

  1. 字體適配如何實現(xiàn)弦撩?
  2. 響應(yīng)鏈的方向?
    hitTest 找到點擊的對象论皆,然后向上(superView)查找響應(yīng)的對應(yīng)方法益楼。
  3. copy 關(guān)鍵字作用?

(1).NSString点晴、NSArray感凤、NSDictionary 等等經(jīng)常使用copy關(guān)鍵字,是因為他們有對應(yīng)的可變類型:NSMutableString粒督、NSMutableArray陪竿、NSMutableDictionary;
(2).block 也經(jīng)常使用 copy 關(guān)鍵字屠橄,具體原因見官方文檔:Objects Use Properties to Keep Track of Blocks:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末族跛,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子锐墙,更是在濱河造成了極大的恐慌礁哄,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件溪北,死亡現(xiàn)場離奇詭異桐绒,居然都是意外死亡,警方通過查閱死者的電腦和手機刻盐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進店門掏膏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人敦锌,你說我怎么就攤上這事馒疹。” “怎么了乙墙?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵颖变,是天一觀的道長生均。 經(jīng)常有香客問我,道長腥刹,這世上最難降的妖魔是什么马胧? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮衔峰,結(jié)果婚禮上佩脊,老公的妹妹穿的比我還像新娘。我一直安慰自己垫卤,他們只是感情好威彰,可當(dāng)我...
    茶點故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著穴肘,像睡著了一般歇盼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上评抚,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天豹缀,我揣著相機與錄音,去河邊找鬼慨代。 笑死邢笙,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的侍匙。 我是一名探鬼主播鸣剪,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼丈积!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起债鸡,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤江滨,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后厌均,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體唬滑,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年棺弊,在試婚紗的時候發(fā)現(xiàn)自己被綠了晶密。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡模她,死狀恐怖稻艰,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情侈净,我是刑警寧澤尊勿,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布僧凤,位于F島的核電站,受9級特大地震影響元扔,放射性物質(zhì)發(fā)生泄漏躯保。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一澎语、第九天 我趴在偏房一處隱蔽的房頂上張望途事。 院中可真熱鬧,春花似錦擅羞、人聲如沸尸变。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽振惰。三九已至,卻和暖如春垄懂,著一層夾襖步出監(jiān)牢的瞬間骑晶,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工草慧, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留桶蛔,地道東北人。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓漫谷,卻偏偏與公主長得像仔雷,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子舔示,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,573評論 2 359

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

  • 出題者簡介: 孫源(sunnyxx)碟婆,目前就職于百度,負(fù)責(zé)百度知道 iOS 客戶端的開發(fā)工作惕稻,對技術(shù)喜歡刨根問底和...
    戈多_于勒閱讀 1,798評論 0 5
  • 這也許是一個優(yōu)秀的時代竖共,幸運的時代,你看俺祠,有多少人在自由地寫想寫的事公给,充滿感情;又也許是一個凄涼的憂傷的很多年蜘渣,沒...
    機易閱讀 363評論 0 1
  • 詩性和理性淌铐,仰望天空和腳踏實地,愛情和面包等等蔫缸,這些孰重孰輕腿准,如果往深刻的層面去討論,那就是一個個哲學(xué)辯題了捂龄。最近...
    申湘黔閱讀 965評論 0 2
  • 昨晚释涛,我正躺在病床上無聊呢加叁,手機響了,是學(xué)生李文俊的舅舅打來的唇撬。 他說李文俊在灣田廣場撿到一部蘋果手機它匕,回去跟他姐...
    蓮之翩躚閱讀 307評論 0 0
  • 我還是先消失一陣子再說吧扑浸。
    粉水田呀閱讀 178評論 0 0