Xcode輔助工具之熱重載插件利器


該博客首發於github.io 2018-06-13 13:43:44
文章最新修改於: 2019-03-31 13:47:20

昨天剛剛看完iOSTips微信公眾號推送的文章, Injection:iOS熱重載背后的黑魔法 , 效果明顯,驚為天人!,
底層原理啥的受限目前水平,咱先不研究,使用方法還是得總結一波的,於是開始琢磨了一下。

第一步 , 去App Store 或者 github下載開源免費的應用 InjectionIII,沒錯就是這貨,長得跟注射器💉似的

第二步, 打開InjectionIII應用,open project選擇Xcode項目的根目錄路徑, 把File Watcher鈎子打上即可

第三步 , 打開項目添加類似入口的代碼或者是監聽的代碼 (!!!: 值得注意的是Xcode10之后需要修改路徑名iOSInjection.bundle修改為iOSInjection10.bundle)

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
	// Override point for customization after application launch.
  //Xcode 10.0之前 
#if DEBUG
	 [[NSBundle bundleWithPath:@"/Applications/InjectionIII.app/Contents/Resources/iOSInjection.bundle"] load];
	//for tvOS:
	[[NSBundle bundleWithPath:@"/Applications/InjectionIII.app/Contents/Resources/tvOSInjection.bundle"] load];
	//Or for macOS:
	[[NSBundle bundleWithPath:@"/Applications/InjectionIII.app/Contents/Resources/macOSInjection.bundle"] load];

		//	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

 //Xcode 10.0之后 (有點湊字數的嫌疑,但是我想的是一勞永逸~)
#if DEBUG
	 [[NSBundle bundleWithPath:@"/Applications/InjectionIII.app/Contents/Resources/iOSInjection10.bundle"] load];
	//for tvOS:
	[[NSBundle bundleWithPath:@"/Applications/InjectionIII.app/Contents/Resources/tvOSInjection10.bundle"] load];
	//Or for macOS:
	[[NSBundle bundleWithPath:@"/Applications/InjectionIII.app/Contents/Resources/macOSInjection10.bundle"] load];

		//	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()
#endif
	return YES;
}

第四步 , 運行代碼,修改局部UI布局或者屬性,command+s保存一下看效果,貌似不用保存也能看到效果... 真的是有點強大 (PS: 從此告別coding五分鍾 編譯兩小時 提升效率杠杠的)

首次運行代碼可以看到控制台打印,如圖則是正確的打印:

- (void)injected{
	//寫在這個方法里調用你的UI修改才會生效 command+s 檢查監聽到文件的修改 然后重新繪制UI 
		//[self setup];
		[self viewDidLoad]; //即調用生效的地方 Debug的時候才會調用 無須擔心項目上線后的影響 開發調試完可移除
}

最后, 大功告成,甩上一張gif查看效果


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM