前言 這是一道很有意思的題,題目來(lái)自群友,據(jù)說(shuō)原題出自sunny。自以為是的解答這道題后,群友拋出一個(gè)新的問(wèn)題,發(fā)現(xiàn)之前的解釋行不通,遂有此文。 0x00 Code 你可能見(jiàn)...
前言 這是一道很有意思的題,題目來(lái)自群友,據(jù)說(shuō)原題出自sunny。自以為是的解答這道題后,群友拋出一個(gè)新的問(wèn)題,發(fā)現(xiàn)之前的解釋行不通,遂有此文。 0x00 Code 你可能見(jiàn)...
前言 你知道objc_msgSendSuper2(注意,不是objc_msgSendSuper)嗎?如果不知道,這篇小文有必要看一下。 0x00 code 通過(guò)clang重寫...
之前寫過(guò)一篇文章 Objective-C對(duì)象內(nèi)存分布是怎樣確定的,作為姊妹篇,兩者配合食用口味更佳。 0x00 API 在runtime.h中可以找到如下接口: 這 6個(gè)函數(shù)...
話不多說(shuō),直接看代碼 0x00 code 看到輸出結(jié)果后直接傻眼,腦子里迅速產(chǎn)生了幾個(gè)疑問(wèn): 為什么輸出的兩個(gè)值不一樣? 2是哪來(lái)的? 2后面是怎么變成1的? 0x01 de...
全文速覽 引子 activities與order的含義 _wrapRunLoopWithAutoreleasePoolHandler反匯編分析 autorelease在run...
對(duì)于一個(gè)類的實(shí)例變量來(lái)說(shuō),我們常說(shuō)他的內(nèi)存分布是isa + ivars。為什么內(nèi)存是這樣分布的?他是怎樣確定的? 本文采用源碼為當(dāng)前最新:objc4-756.2與libmal...
TaggedPointer是蘋果推出的一種通過(guò)指針來(lái)存儲(chǔ)少量數(shù)據(jù)的技術(shù),可以有效避免內(nèi)存浪費(fèi)。 本文所用源碼為objc4-756.2,macOS版本為10.15.2 Tagg...
fishhook,facebook開(kāi)源的一個(gè)可以動(dòng)態(tài)綁定Mach-O符號(hào)表的庫(kù)。在程序啟動(dòng)時(shí)與運(yùn)行時(shí)會(huì)通過(guò)dyld來(lái)綁定符號(hào)表(這里有非懶加載與懶加載之分),而fishhoo...
KVO,蘋果的一種鍵值監(jiān)聽(tīng)實(shí)現(xiàn)技術(shù)。Key-Value Observing Implementation Details中有如下描述: Automatic key-value...
Swift支持協(xié)議方法的默認(rèn)實(shí)現(xiàn),而Objective-C不支持,突然想到多年前sunnyxx開(kāi)源的 ProtocolKit ,順手翻翻源碼。 @defs __COUNTER...
導(dǎo)讀 為什么說(shuō)引用是別名 為什么引用作為形參可以修改實(shí)參的值 為什么引用初始化后無(wú)法指向其他對(duì)象 引用與指針對(duì)應(yīng)的匯編代碼 對(duì)引用的理解 為什么說(shuō)引用是別名 從地址的角度來(lái)說(shuō)...
導(dǎo)讀 本文為筆者對(duì)C語(yǔ)言的一點(diǎn)思考,內(nèi)容較雜,難免出錯(cuò)。如果閱讀過(guò)程中發(fā)現(xiàn)什么問(wèn)題,望不惜賜教。推薦順序閱讀,否則可能出現(xiàn)斷片現(xiàn)象。 全文共包含以下幾部分: 變量與地址 內(nèi)存...
前言 題目來(lái)自于https://kobes.ca/ctest ,共16題。 題目 解析:理解setjmp與longjmp后,本題很容易解答。首次調(diào)用setjmp時(shí),會(huì)標(biāo)記jm...
本文概要 指針的種類及區(qū)別 不同指針間的相互轉(zhuǎn)換及常用方法 各種類型的指針獲取及應(yīng)用 more than that 指針簡(jiǎn)介 打開(kāi)開(kāi)發(fā)文檔,可以從Swift-->Swift ...
前言 Swift終于穩(wěn)定了,抽空看了遍語(yǔ)法,寫個(gè)Demo找手感。項(xiàng)目中經(jīng)常會(huì)出現(xiàn)無(wú)數(shù)據(jù)或者無(wú)網(wǎng)頁(yè)面需要適配,so... JKPlaceholderView來(lái)了。 表現(xiàn) 看點(diǎn) ...
前言 題目來(lái)自JavaScript Puzzlers,涉及的知識(shí)點(diǎn)很廣,本文的解題過(guò)程盡量做到詳細(xì)易懂。由于文章篇幅較長(zhǎng),推薦先馬后看,相信一定可以在文章中找到不熟或者概念模...
前言 本文為學(xué)習(xí)過(guò)程中的this小節(jié),作為一名JavaScript自學(xué)未成才的編程人員,還沒(méi)從“原型繼承”中回過(guò)神來(lái)(可以參考筆者上一篇文章《大話JavaScript對(duì)象》)...
前言 寫C++、Java、Objective-C等語(yǔ)言的猿人們,在接觸JavaScript時(shí)一定被__proto__和prototype搞得暈頭轉(zhuǎn)向。筆者正在自學(xué)JavaSc...