Facebook 發布的 iOS 開發調試工具 「Tweaks」 的使用體驗如何?
Tweaks is an easy way to fine-tune an iOS app. Why? The best way to improve an app is to use it every day. Even when ideas can be tested out in advance — for example, with Origami — it can still take some time with the app to see how it works in practice.
via Tweaks/README.md at master - facebook/Tweaks - GitHub
從名字 "Tweaks" 就可以看出,Facebook 出的這個工具的目標只是做一些小修小改,所以千萬不要以為這是個什麼全能調試工具。因為 Paper 這個應用的各種界面和動畫的效果我很欣賞,Tweak 說在 Paper 中大量使用了,所以今天花了一些時間仔細研究了下 Tweak,總的結論來說:『Tweak 是個高質量的,在它宣傳功能範圍內能非常良好地達到要求的,使用簡單的工具』
- 詳細的 README.md
- 明確的 License(BSD) 和 Patent 聲明(基本上的意思就是小樣,只要你不惹我,我不會管你的 *~( ̄▽ ̄)~* )
- 有專門的一個 Contributing.md 來說明大家可以如何貢獻代碼或建議或問題
- 有 podspec,可以用 CocoaPods 集成(如果你不知道 CocoaPods.org,你不夠潮啊!)
- 提供了 demo project
==========================
功能介紹- 因為用到了 NSHashTable 等 iOS 6 之後才有的一些 feature,所以不能支持 iOS 6.0 以下系統
- 同時支持 ARC (Automatic Reference Counting) 和 MRR(Manual Retain-Release)
- 通過宏定義,只有在 Debug 編譯設置下才有效,不過那些調試的界面,你得自己控制下
其實主要使用的就是三個 macro,都定義在 FBTweakInline.h 里
FBTweakInline(category_, collection_, name_, ...)
FBTweakValue(category_, collection_, name_, ...)
FBTweakBind(object_, property_, category_, collection_, name_, ...)
FBTweakViewController : UINavigationController
FBTweakViewController是提供一個可以調整所有預先設置的 FBTweak 的值
你可以通過在界面的某個地方加入一個按鈕來彈出這個界面。(當然,你得保證只有在 Debug 的時候這個按鈕才可見)。
FBTweakShakeWindow : UIWindow
FBTweakShakeWindow 在應用啟動的時候,初始化這個類的 Instance 來作為 application 的 window。FBTweakShakeWindow的作用就是在使用過程中,shake 一些設備,就會彈出上面介紹的 FBTweakViewController
介紹下最簡單的使用方法:
FBTweakValue(category_, collection_, name_, ...)
其中 category,collection,name 是用來分層和區分不同的 Tweak value 的。之後的可變參數,第一個是 default value,還有可選的是可以添加 min 和 max。
在代碼里需要讀取可變參數的時候,就使用這個 macro,在 release 編譯設置下,這個 macro 會直接展開成 default value,在 debug 編譯設置下,如果你沒設置 tweak 的值,就返回 default value,有 tweak 值就返回 tweak 值。- _FBTweakTableViewCellModeBoolean,
- _FBTweakTableViewCellModeInteger,
- _FBTweakTableViewCellModeReal,
- _FBTweakTableViewCellModeString,
也就是說,默認情況夏,你能 tweak 的數據類型也就是 BOOL Integer Float String 這四個。如果你還想要 tweak 更高級的東西,就得付出多一些的代價,去實現自己的界面來調整 tweak 的值。
用 FBTweakValue 的話,只是在代碼運行到 FBTweakValue 的時候,才會使用到 tweak 過的值。用 FBTweakBind 的話,是能將 tweak 的值和 bind 對象的某個 property 綁定起來實時更新的,但是默認情況下,能 bind 的 property 必須是上面提到的四種,如果是例如 UIFont,UIColor,CGFrame 這些,你就得通過額外的工作量來保證試試更新了。==========================寫那麼多累死我了,我本來還想寫寫原理的,但是寫不動了,各位看官見諒。
下了個例子程序,貌似還不錯。
通過各種綁定,可以方便的將常數參數可配置化,不需要重新編譯運行就可以立即看到最後效果。
尤其適合設計師確定參數。還可以,挺方便的。把這個庫再封裝下,可以方便的嫁接到目前程序中
推薦閱讀:
※手機電池到底應該放完電再充電,還是沒事就充?
※學了swift,有沒有關於用swift 進行ios開發入門的教程?
※如何在工作之餘自學軟體開發?
※iOS 的應用審核有多嚴格?
※在蘋果 Cocoa/iOS 編程下,有沒有類似《Debuggin Applications》或《Windows 高級調試》的書呢?