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 是個高質量的,在它宣傳功能範圍內能非常良好地達到要求的,使用簡單的工具』

如果各位看官,還有閒情逸緻,想多了解一些具體的東西,那就借著往下看,友情提示:挺長的

從 Tweaks 的 facebook/Tweaks · GitHub 主頁就充分體現了這個小工具的檔次。

  • 詳細的 README.md

  • 明確的 License(BSD) 和 Patent 聲明(基本上的意思就是小樣,只要你不惹我,我不會管你的 *~( ̄▽ ̄)~* )

  • 有專門的一個 Contributing.md 來說明大家可以如何貢獻代碼或建議或問題
  • 有 podspec,可以用 CocoaPods 集成(如果你不知道 CocoaPods.org,你不夠潮啊!)
  • 提供了 demo project

然後很多東西在 Github 的主頁里都有提到,我盡量說一些 README 里沒有的東西。

==========================

功能介紹

  • 因為用到了 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_, ...)

這部分其實可以寫很多,但是畢竟談的是使用體驗,代碼我就不貼太多了。

除了提供基本的底層實現外,Tweaks 裡面還提供了兩個 UI 層面的類來進一步簡化使用。

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 值。

別的就有待各位自己去看了,這裡實在寫不下那麼多。

==========================

局限性

如果使用工具自帶的FBTweakViewController的話,他的 cell 只提供了四種類型

  • _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 高級調試》的書呢?

TAG:Facebook | iOS開發 |