Injection for Xcode:成噸的提高開發(fā)效率

今天強(qiáng)烈推薦一個(gè)Xcode高端必備插件: Injection Plugin for Xcode
直接放demo演示動(dòng)圖:

Injection Plugin for Xcode

我很久以前就希望有這么一種功能,直接修改某行代碼赡盘,F(xiàn)5一下就能刷新這個(gè)實(shí)例扯旷,而不用重寫build整個(gè)項(xiàng)目》岣瑁靠夭议蟆,我不是在說(shuō)前端婚温!
沒(méi)想居然有一天锡宋,夢(mèng)想照入現(xiàn)實(shí)@芡濉!执俩!是的徐钠,就是它,不用重新啟動(dòng)應(yīng)用就可以讓修改的代碼生效役首。

使用

超級(jí)簡(jiǎn)單:修改源碼尝丐,按下刷新的快捷鍵<code>ctrl</code>+<code>=</code>。會(huì)有一個(gè)快速的進(jìn)度條閃過(guò)衡奥,修改的代碼就生效了爹袁。

安裝

  • 可以使用Alcatraz安裝
  • 或者clone這個(gè)項(xiàng)目,運(yùn)行InjectionPluginLite/InjectionPlugin.xcodeproj矮固。

檢驗(yàn)安裝成功

在某個(gè)類里添加下面的方法:
<pre><code>

  • (void)injected{

    NSLog(@"I've been injected: %@", self);

}
</code></pre>
或者swift下:
<pre><code>
func injected() {

print("I've been injected: (self)")

}
</code></pre>
打一個(gè)斷點(diǎn)在這行代碼上失息,按下快捷鍵ctrl+=后,代碼執(zhí)行到這個(gè)類時(shí)档址,如果斷點(diǎn)進(jìn)入這個(gè)方法說(shuō)明你已經(jīng)安裝成功了盹兢。

支持Swift

Swift中的大部分類都可以正常使用。不過(guò)以下一些情況使用會(huì)有問(wèn)題:

  • 結(jié)構(gòu)中的修改
  • 標(biāo)記為final的func和class
  • 不在類里的全局函數(shù)和變量

工作原理

Injection是一個(gè)Xcode的擴(kuò)展插件守伸,可以讓你修改一個(gè)類的代碼實(shí)現(xiàn)而不用重啟整個(gè)應(yīng)用绎秒。

它通過(guò)解析應(yīng)用的build日志來(lái)判斷源代碼文件上次是怎么被編譯的。然后會(huì)把這些重新編譯一遍包在一個(gè)已經(jīng)通過(guò)動(dòng)態(tài)加載器(dynamic loader)注入到應(yīng)用的bundle里含友。這個(gè)時(shí)候其實(shí)有兩個(gè)版本的類在app里替裆,一個(gè)原始的和一個(gè)修改過(guò)的版本。修改過(guò)的版本通過(guò)和原始類"swizzled"來(lái)產(chǎn)生效果窘问。

swizzling利用了OC的runtime辆童。這個(gè)也可以在Swift中沒(méi)有標(biāo)記為final或者private的方法(可以被override的方法)。對(duì)結(jié)構(gòu)體無(wú)效惠赫。

這個(gè)插件還可以做點(diǎn)什么

  • 按照這個(gè)文檔操作把鉴,還可以支持Storyboard Storyboard-based iOS projects.
  • 也可以可視化的調(diào)整顏色 collection of tunable parameters
  • 當(dāng)你開始注入時(shí),會(huì)在同一個(gè)目錄下生成一個(gè)項(xiàng)目文件:iOSInjectionProject 或者 OSXInjectionProject儿咱。這個(gè)項(xiàng)目用于注入你的修改到原項(xiàng)目庭砍。建議加入<code>.gitignore</code>。
  • ctrl+=的快捷鍵可以在 "Tunable App Parameters"面板里自定義
  • 如果想在一臺(tái)設(shè)備上使用混埠,參考這個(gè)文檔patch to your project..

我安裝時(shí)遇到的一個(gè)錯(cuò)誤

第一次使用怠缸,提示我項(xiàng)目里使用的一個(gè)第三方framework找不到。這個(gè)時(shí)候打開它自動(dòng)生成的iOSInjectionProject钳宪,編譯一下可以看到錯(cuò)誤的具體原因揭北。我看到issue里也好多人遇到扳炬。解決方式就是將自己項(xiàng)目framework search paths中的這個(gè)第三方框架的路徑拷貝到iOSInjectionProject里。

歡迎關(guān)注我的微博:@沒(méi)故事的卓同學(xué)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末搔体,一起剝皮案震驚了整個(gè)濱河市恨樟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌疚俱,老刑警劉巖劝术,帶你破解...
    沈念sama閱讀 206,013評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異呆奕,居然都是意外死亡养晋,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門登馒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)匙握,“玉大人咆槽,你說(shuō)我怎么就攤上這事陈轿。” “怎么了秦忿?”我有些...
    開封第一講書人閱讀 152,370評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵麦射,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我灯谣,道長(zhǎng)潜秋,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,168評(píng)論 1 278
  • 正文 為了忘掉前任胎许,我火速辦了婚禮峻呛,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘辜窑。我一直安慰自己钩述,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,153評(píng)論 5 371
  • 文/花漫 我一把揭開白布穆碎。 她就那樣靜靜地躺著牙勘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪所禀。 梳的紋絲不亂的頭發(fā)上方面,一...
    開封第一講書人閱讀 48,954評(píng)論 1 283
  • 那天,我揣著相機(jī)與錄音色徘,去河邊找鬼恭金。 笑死,一個(gè)胖子當(dāng)著我的面吹牛褂策,可吹牛的內(nèi)容都是我干的横腿。 我是一名探鬼主播床蜘,決...
    沈念sama閱讀 38,271評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蔑水!你這毒婦竟也來(lái)了邢锯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,916評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤搀别,失蹤者是張志新(化名)和其女友劉穎丹擎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體歇父,經(jīng)...
    沈念sama閱讀 43,382評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蒂培,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,877評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了榜苫。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片护戳。...
    茶點(diǎn)故事閱讀 37,989評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖垂睬,靈堂內(nèi)的尸體忽然破棺而出媳荒,到底是詐尸還是另有隱情,我是刑警寧澤驹饺,帶...
    沈念sama閱讀 33,624評(píng)論 4 322
  • 正文 年R本政府宣布钳枕,位于F島的核電站,受9級(jí)特大地震影響赏壹,放射性物質(zhì)發(fā)生泄漏鱼炒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,209評(píng)論 3 307
  • 文/蒙蒙 一蝌借、第九天 我趴在偏房一處隱蔽的房頂上張望昔瞧。 院中可真熱鬧,春花似錦菩佑、人聲如沸自晰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)缀磕。三九已至,卻和暖如春劣光,著一層夾襖步出監(jiān)牢的瞬間袜蚕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工绢涡, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留牲剃,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,401評(píng)論 2 352
  • 正文 我出身青樓雄可,卻偏偏與公主長(zhǎng)得像凿傅,于是被迫代替她去往敵國(guó)和親缠犀。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,700評(píng)論 2 345

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

  • 秘艾 《黃帝內(nèi)經(jīng)》里面有這么一句話:“百病源于經(jīng)絡(luò)堵”滔迈!民間也有兩句:“經(jīng)絡(luò)不通,走路中風(fēng)”被辑,“經(jīng)絡(luò)不通燎悍,渾身不舒...
    艾愛(ài)緣閱讀 499評(píng)論 0 0
  • 昨天在寫作對(duì)賭的群里發(fā)布一篇原創(chuàng)的文章,題為《拜托了盼理,別再拿愛(ài)情說(shuō)事》谈山,文章追了瓊瑤阿姨的熱點(diǎn),其中有一段話被群內(nèi)...
    你的喜歡很重要閱讀 312評(píng)論 3 2
  • 有些人你永遠(yuǎn)選擇原諒宏怔,所以他給你永久的傷害奏路。
    越愚閱讀 197評(píng)論 0 0
  • 孟菲斯 風(fēng)格——Memphis style 先丟幾張圖片感受下 干貨在這里! 1構(gòu)圖上打破橫平豎直的線條举哟,采用波形...
    是hoho呀閱讀 13,713評(píng)論 0 4