debug環(huán)境下動(dòng)態(tài)注入代碼 for iOS

圖片來源于網(wǎng)絡(luò)

需求

開發(fā)的時(shí)候斑胜,每次改動(dòng)代碼都要重新run然后跑一遍app來測(cè)試改動(dòng)代碼。那么問題來了嫌吠,有木有方案就是改完代碼不用重新run就能及時(shí)看到效果的呢止潘,答案是YES
現(xiàn)在解決這一需求的方案網(wǎng)上也不算多辫诅,在此筆者特意分享一下筆者使用的工具和方案來提高開發(fā)效率凭戴。(不講底層原理,只是純屬的分享一款app)

大神或者已經(jīng)知道Injection的請(qǐng)繞道炕矮,本篇只是純屬分享技巧的文章么夫,只是想讓大家提高開發(fā)效率而已者冤。

Xcode8以前(過期)

xcode8以前可以裝插件的時(shí)代,可以利用dyci-mainInjection插件來進(jìn)行代碼注入档痪。不過現(xiàn)在網(wǎng)上也有很多方法讓Xcode8支持裝插件涉枫,但是這樣打包上傳就會(huì)審核不過,而且略麻煩腐螟。(反正筆者現(xiàn)在是習(xí)慣了)

ps:dyci-mainInjectiongithub上自行搜索即可愿汰。

Xcode8之后(含)

Xcode8之后要?jiǎng)討B(tài)注入代碼要使用Injection app,作者正是制作Injection插件的人乐纸。因?yàn)閤code8不支持了插件衬廷,特意有制作了一個(gè)app,下載地址:http://johnholdsworth.com/injection.html

國外的網(wǎng)站汽绢,下載有點(diǎn)慢吗跋。

按照官方的使用,打開Xcode和Injection app宁昭,然后在運(yùn)行Xcode里的項(xiàng)目跌宛,之后在點(diǎn)擊Injection app菜單里的Inject Source即可。操作就是這么簡單积仗,but....

注入的代碼要重新執(zhí)行才生效秩冈,假設(shè)你a push b,然后在b里修改了代碼并且Inject Source操作之后斥扛,首先從b pop a然后在從a push b里運(yùn)行的就是你b頁面修改后的代碼了。

問題

  • 如果出現(xiàn)Timeout waiting for connection from client app的問題丹锹,請(qǐng)點(diǎn)擊菜單macOS Project -> Patch然后會(huì)在項(xiàng)目的main文件里生成一些DEBUG代碼稀颁,之后你再去修改你的代碼,然后在進(jìn)行Inject Source玩玩吧

其他問題請(qǐng)自行去作者github上提issues楣黍。https://github.com/johnno1962/InjectionApp

  • 其次匾灶,這個(gè)app是不注入get方法的。比如你使用了懶加載租漂,想在get方法里多加一些變量的初始化屬性阶女,用這個(gè)app就辦不到,因此筆者一般采用LLDB方式在get方法里注入代碼哩治。
    • 首先在get方法里打一個(gè)斷點(diǎn)秃踩,然后在LLDB控制臺(tái)里輸入p命令即可。之后在鍵入你要注入的代碼业筏,代碼輸入完之后在連續(xù)按兩下回車鍵即可退出LLDB控制臺(tái)憔杨,然后釋放斷點(diǎn)就見證神奇的一刻了。

此方法是一次性蒜胖,也就是說第二次調(diào)用這個(gè)get方法是不會(huì)執(zhí)行剛那個(gè)LLDB操作里的代碼滴消别。

結(jié)語

本篇提升開發(fā)效率的動(dòng)態(tài)注入代碼就分享到這抛蚤,如果有更好的方案歡迎聯(lián)系筆者。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末寻狂,一起剝皮案震驚了整個(gè)濱河市岁经,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蛇券,老刑警劉巖缀壤,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異怀读,居然都是意外死亡诉位,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門菜枷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來苍糠,“玉大人,你說我怎么就攤上這事啤誊≡啦t!?“怎么了?”我有些...
    開封第一講書人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵蚊锹,是天一觀的道長瞳筏。 經(jīng)常有香客問我,道長牡昆,這世上最難降的妖魔是什么姚炕? 我笑而不...
    開封第一講書人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮丢烘,結(jié)果婚禮上柱宦,老公的妹妹穿的比我還像新娘。我一直安慰自己播瞳,他們只是感情好掸刊,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著赢乓,像睡著了一般忧侧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上牌芋,一...
    開封第一講書人閱讀 51,443評(píng)論 1 302
  • 那天蚓炬,我揣著相機(jī)與錄音,去河邊找鬼躺屁。 笑死试吁,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播熄捍,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼烛恤,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了余耽?” 一聲冷哼從身側(cè)響起缚柏,我...
    開封第一講書人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎碟贾,沒想到半個(gè)月后币喧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡袱耽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年杀餐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片朱巨。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡史翘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出冀续,到底是詐尸還是另有隱情琼讽,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布洪唐,位于F島的核電站钻蹬,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏凭需。R本人自食惡果不足惜问欠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望粒蜈。 院中可真熱鬧顺献,春花似錦、人聲如沸薪伏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嫁怀。三九已至,卻和暖如春借浊,著一層夾襖步出監(jiān)牢的瞬間塘淑,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來泰國打工蚂斤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留存捺,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像捌治,于是被迫代替她去往敵國和親岗钩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

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