更新:最近發(fā)現(xiàn)了 騰訊 QMUI 團隊開源 iOS UI 調(diào)試軟件-Lookin;良心之作,真的好用且完全免費。Xcode調(diào)試,剛剛滴?。?!
官網(wǎng)介紹地址
2018.11.8最新更新:injectionIII使用,Xcode10使用無效,搜了GitHub:
InjectionIII的GitHub,給出了解決辦法: 下載InjectionX鏈接
for Xcode 10:
//Swift:
#if DEBUG
Bundle(path: "/Applications/InjectionIII.app/Contents/Resources/iOSInjection10.bundle")?.load()
//for tvOS:
Bundle(path: "/Applications/InjectionIII.app/Contents/Resources/tvOSInjection10.bundle")?.load()
//Or for macOS:
Bundle(path: "/Applications/InjectionIII.app/Contents/Resources/macOSInjection10.bundle")?.load()
//OC :
// for iOS
[[NSBundle bundleWithPath:@"/Applications/InjectionX.app/Contents/Resources/iOSInjection.bundle"] load];
// for tvOS
[[NSBundle bundleWithPath:@"/Applications/InjectionX.app/Contents/Resources/tvOSInjection.bundle"] load];
// for masOS
[[NSBundle bundleWithPath:@"/Applications/InjectionX.app/Contents/Resources/macOSInjection.bundle"] load];
#endif
#前言:一直羨慕安卓開發(fā):這邊改代碼,那邊瞬間見效果;Xcode還需要編譯、項目跑起來,模擬器才能看到效果。有時候XCode編譯超慢,一等就是幾分鐘,實在急死人了。Xcode8以前可以安裝插件Injection for Xcode 實現(xiàn),但是Xcode8以后不能隨心所欲的裝插件了?,F(xiàn)在好啦,不使用插件也可以實現(xiàn)UI即時調(diào)試了。
[injection鏈接](http://johnholdsworth.com/injection.html)
[Mac App Store](https://itunes.apple.com/us/app/injectioniii/id1380446739?ls=1&mt=12)
同時獻(xiàn)上網(wǎng)上大牛對這個開發(fā)工具的實現(xiàn)原理的分析:《Injection:iOS熱重載背后的黑魔法》
[鏈接地址](https://mp.weixin.qq.com/s/hFnHdOP6pmIwzZck-zXE8g)
使用:
#一、OC:
##1.在我們的項目中- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法加入如下代碼:
>if DEBUG
// for iOS
[[NSBundle bundleWithPath:@"/Applications/InjectionIII.app/Contents/Resources/iOSInjection.bundle"] load];
// for tvOS
[[NSBundle bundleWithPath:@"/Applications/InjectionIII.app/Contents/Resources/tvOSInjection.bundle"] load];
// for masOS
[[NSBundle bundleWithPath:@"/Applications/InjectionIII.app/Contents/Resources/macOSInjection.bundle"] load];
>endif
注意:if DEBUG 和endif前面少個#(因為加上#就變成黑字體了,也不顯示#)
#2.打開Mac APP injectionIII, 點擊Mac 桌面的injectionIII 圖標(biāo)-> Open Recent -> 選擇你的項目 ,最后再選擇FileWatcher(有對號即可);
##3.在任意繼承自O(shè)C的類中加入如下需要跟新的UI代碼,在我們修改了對應(yīng)文件按下COMMAND + S即可看到UI reload了;
>-(void)injected{
NSLog(@"I've been injected: %@", self);
self.view.backgroundColor = [UIColor goldColor];
}
#二:Swift:
>if DEBUG
Bundle(path: "/Applications/InjectionIII.app/Contents/Resources/iOSInjection.bundle")?.load()
*//for tvOS:*
Bundle(path: "/Applications/InjectionIII.app/Contents/Resources/tvOSInjection.bundle")?.load()
*//Or for macOS:*
Bundle(path: "/Applications/InjectionIII.app/Contents/Resources/macOSInjection.bundle")?.load()
endif
執(zhí)行快捷鍵: COMMAND + S
@objc func injected(){
print("I've been injected: \(self)")
}
不過這只是不run XCode情況下,預(yù)覽UI界面效果,最后要想項目重運行達(dá)到效果,還需要把注入的代碼寫粘貼復(fù)制在真實需要改變的地方。
[injectionIIIDemo地址](https://github.com/Dxc123/injectionIIIDemo.git)