標籤:
調介面UI時,介面迭代視圖比較多時不太好調,下面介紹一款即時調UI的軟體:Reveal。Reveal工具適合調試非Interface Builder建立的介面,Interface Builder中建立的xib和storyboard在企業開發中並不是總能勝任
Reveal地址:http://revealapp.com
下載好安裝包之後,用Reveal串連模擬器調試:
Reveal官方介紹了好幾種辦法使Reveal串連模擬器,都需要修改工程檔案。但如果修改了工程檔案,就需要參與項目開發的所有人都裝有Reveal,這其實是相當不友好的。本節要介紹一種不修改任何工程檔案的辦法,在實際使用中,這種辦法最簡單方便。該方法的步驟如下:
首先開啟終端,輸入 vim ~/.lldbinit 建立一個名為.lldbinit的檔案(如果找不到這個檔案,可以在終端中執行:defaults write com.apple.finder AppleShowAllFiles YES 顯示隱藏檔案),然後將如下內容輸入到該檔案中:
command alias reveal_load_sim expr (void*)dlopen("/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib", 0x2);
command alias reveal_load_dev expr (void*)dlopen([(NSString*)[(NSBundle*)[NSBundle mainBundle] pathForResource:@"libReveal" ofType:@"dylib"] cStringUsingEncoding:0x4], 0x2);
command alias reveal_start expr (void)[(NSNotificationCenter*)[NSNotificationCenter defaultCenter] postNotificationName:@"IBARevealRequestStart" object:nil];
command alias reveal_stop expr (void)[(NSNotificationCenter*)[NSNotificationCenter defaultCenter] postNotificationName:@"IBARevealRequestStop" object:nil];
該步驟其實是為lldb設定了4個別名,為了後續方便操作,這4個別名意義如下:
reveal_load_sim 為模擬器載入reveal調試用的動態連結程式庫
reveal_load_dev 為真機載入reveal調試用的動態連結程式庫
reveal_start 啟動reveal調試功能
reveal_stop 結束reveal調試功能
接下來,我們在AppDelegate類的 application: didFinishLaunchingWithOptions: 方法中,加一個斷點,然後右鍵選擇 編輯斷點
點擊”Action”項邊右的”Add Action”,然後輸入“reveal_load_sim”,勾選上Options上的”Automatically continue after evaluating”選項
開啟Reveal後,運行程式。運行完成之後,點擊Reveal左上方的No Connection選擇你當前的app就可以調試你模擬器上當前啟動並執行介面了。
註:
模擬器 工程與Reveal之間不是即時串連的,如果你更改了類比上的介面後想在Reveal上繼續調試,只需要到No Connection處重新選擇一下當前的app(或者可以Command + R)就可以了,相當於重新整理介面。
如果反覆調試都無法在No Connection中找到當前的app,那麼找到Reveal包,不管包名是什麼,都修改成Reveal,沒有任何尾碼,然後重啟Xcode、Reveal,應該就沒問題了,這是因為我們在編譯時間,需要調取Reveal包內的資源,如果Reveal名字不對,最後讀取時路徑肯定錯誤,調取不到包內的資源,Reveal就不能發揮作用。
Reveal——iOS程式介面調試工具