1. 程式人生 > >【分享】iOS下view hierarchy工具

【分享】iOS下view hierarchy工具

GUI程式開發過程中,龐大的View樹總每次總令人花費不少時間進行除錯。

當然,程式設計師總能為這個鬱悶的過程開發到方便的工具---view hierarchy。

如果你曾經開發過android程式,那麼你應該會了解過Hierarchy Viewer(有可能被牆) 這個官方提供的工具。

在iOS下,Apple並沒有提供相關工具。不過幸運的是,有其他開發者開發了相關的工具:

Reveal (商業,閉源,beta階段)

我強烈推薦大家使用Reveal,儘管它是beta階段,但已經比較成熟,而且其功能完備,GUI介面也相對清晰,另外支援dylib方式載入省心省力。

介紹一下Reveal的使用方法:

1、下載後,放到/Application/ 目錄下

2、在 Reveal.app/Contents/SharedSupport 目錄下存放了其文件和framework

3、靜態庫使用方法,該方法有點是可以在真機和模擬器上使用。

將其Reveal.framework 加入到工程中編譯,並同時link 以下三個framework

CFNetwork.framework

QuartzCore.framework

CoreGraphics.framework

最後注意需要將Build Settings的Other Linker Flags設定為-ObjC ,以確保編譯的時候會強制link相關程式碼(否則就會因沒有被引用而刪除掉)

4、dylib使用方法,優點是可以完全不需要改程式碼,但你必須要有一個執行程式碼的環境,如debugger或越獄外掛。

1)使用函式啟動,新增以下函式,並在啟動程式後呼叫:

void vh()
{
    void *revealLib = dlopen("/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib", 2);
    if (revealLib) {
        [[NSNotificationCenter defaultCenter] postNotificationName:@"IBARevealRequestStart" object:0];
    }
    else{
        char *error = dlerror();
        NSLog(@"Reveal dlopen error: %s", error);
    }
}

2)使用lldb啟動(或attatch 到其他程序上,如模擬器的MobileSafari,貼上下面的程式碼:
(lldb)p (void*)dlopen("/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib", 2)?(void)[[NSNotificationCenter defaultCenter] postNotificationName:@"IBARevealRequestStart" object:0]:(void)NSLog(@"Reveal dlopen error: %s", (char*)dlerror())

5、開啟Reveal,檢視結果,這裡以MobileSafari為例:


最後補充說明一下:上述程式碼為了方便所以hardcode了dylib的路徑,如果需要在真機上使用,需要將dylib複製到真機上並修改路徑。

相關推薦

分享iOSview hierarchy工具

GUI程式開發過程中,龐大的View樹總每次總令人花費不少時間進行除錯。 當然,程式設計師總能為這個鬱悶的過程開發到方便的工具---view hierarchy。 如果你曾經開發過android程式,那麼你應該會了解過Hierarchy Viewer(有可能被牆) 這個官

分享Windows日誌查看工具分享

hub class 後來 windows.h int href 問題 命令 lin   在Linux下查看日誌,使用tail、grep、find等命令還比較方便,後來需要在Windows中處理一些問題,發現缺少類似的功能,比如tailf實時輸出,於是在網上收集了一些相關的小

iosaudio不能自動播放的問題

IE 能夠 mov audio head clas cli script device <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8">

PHPPHP7 安裝並使用 xhprof 效能分析工具

git clone https://github.com/longxinH/xhprof 安裝 xhprof cd xhprof/extension/ phpize ./configure make make install 然後在/etc/php.

iOSiOS高斯模糊效果的實現

其實有很多種實現方式,但是沒必要了解那麼多,簡單實用就行,選取一種效能相對來說比較好的方式 效果圖如下(高斯0.1): 程式碼: 需要匯入 #import <Accelerate/Accelerate.h> UIImage *ima

騰訊Bugly乾貨分享iOS黑客技術大揭祕

“8小時內拼工作,8小時外拼成長”這是大家共同的理想。除了每天忙於工作外,我們都希望能更多地區吸收領域內的新知識與新技能,從而走向人生巔峰。 Dev Club 是一個交流移動開發技術,結交朋友,擴充套件人脈的社群,成員都是經過稽核的移動開發工程師。每週都會

乾貨分享C# 實體類生成工具

前言:   專案實戰中不論是業務編碼還是通用編碼,總會歸納出一些通用的工具類。放入專案中一勞永逸,讓兄弟姐妹們避免編寫重複程式碼。所以利用了工作之餘的時間,將這些散落在多個專案中精緻優雅的工具類,歸納起來形成工程,方便後續工作的使用和便捷開發。 根據實際需求,編寫了此工具。目前只支援SQLSer

LinuxLinux統計當前文件夾的文件個數、目錄個數

article logs 過濾 ref bash 輸出 子文件夾 http 輸出信息 統計當前文件夾下文件的個數,包括子文件夾裏的 ls -lR|grep "^-"|wc -l 統計文件夾下目錄的個數,包括子文件夾裏的 ls -lR|grep "^d"

分享Brackets安裝emmet插件出錯解決辦法

racket img 復制 end 查看 解決辦法 目錄 nal get 1.復制下方鏈接,迅雷下載文件得到:brackets-emmet-1.2.1.zip文件 https://s3.amazonaws.com/extend.brackets/brackets-em

分享迅為iTOP4412開發板-Android系統屏幕旋轉設置

原生 android4 代碼 豎屏 == watermark ont 分辨率 軟件 1.1概述 Android4.0,Androd4.4源代碼能夠編譯成手機模式和平板模式,訊為iTop4412 開發平臺 的Android系統默認編譯為平板模式。客戶須要依據自己的產品

css回想經典的布局

範圍 使用 you 方式 窮舉 add height 設置 蘊含   看到這張圖相信大多數人都很熟悉,這曾經是一種經典的布局方式,一道經典的面試題,但是隨著歲月的流轉,時光的交替(頗有一種“天下風雲出我輩,一入江湖歲月催”的感慨,哈哈),它一步步逐漸退出了歷史舞臺,不過在

分享Java後臺開發精選知識圖譜

僅支持 jqgrid lai content 結果集 完全 異常處理 分布式服務 list 地址 引言: 學習一個新的技術時,其實不在於跟著某個教程敲出了幾行、幾百行代碼,這樣你最多只能知其然而不知其所以然,進步緩慢且深度有限,最重要的是一開始就對整個學習路線有宏觀、簡潔的

轉載VMware的Ubuntu用ifconfig不能顯示ip地址的解決方案

技術分享 linu p地址 ssg 們的 網絡接口 ssh 註意 onf 轉載於 http://blog.163.com/wjn_mcu/blog/static/23801601620146161062704/ 背景 在虛擬機下運行操作系統,尤其是Linux系統已經是非

Android自己定義組件系列1——自己定義View及ViewGroup

全部 int ++ btn -i pre 剪切 final 界面 View類是ViewGroup的父類,ViewGroup具有View的全部特性。ViewGroup主要用來充當View的容器。將當中的View作為自己孩子,並對其進行管理。當然孩子也能夠是ViewGrou

面試iOS 開發面試題(一)

readonly ava obj jce easy 主動 每一個 我不 com   1. #import 跟#include 又什麽差別,@class呢, #import<> 跟 #import””又什麽差別?   答:#import是Obje

Ubuntu外放有聲音 耳機沒聲音

新的 驅動 手機 發現 停止 執行 恢復 保存 機會 真是使用linux每天都有新的發現啊,今天早上起來用電腦,想聽幾首歌,插上耳機後發現沒聲音,我還以為是耳機壞了,就把耳機插在了手機上,發現耳機有聲音,很納悶,我象是不是電腦接口有問題了,但是在進系統的時候耳機會響一下,所

Linux查看進程打開的文件句柄數

art blog targe 時間 ase 響應時間 nbsp lin repl ---查看系統默認的最大文件句柄數,系統默認是1024 # ulimit -n 1024 ----查看當前進程打開了多少句柄數 # lsof -n|awk ‘{print $2}‘|sort

轉載linux的mount命令詳解;

文件的 flag 自動加載 網絡文件系統 解決問題 選項 lock home 多個參數 以下內容來自:http://blog.csdn.net/clozxy/article/details/5299054 http://linux.chinaunix.net/techdo

轉載Linuxchkconfig命令詳解

name scrip 再次 http 缺省 重新 禁止 level pool chkconfig命令主要用來更新(啟動或停止)和查詢系統服務的運行級信息。謹記chkconfig不是立即自動禁止或激活一個服務,它只是簡單的改變了符號連接。 使用語法:chkconfig [--

分享不知道怎麽學java?java學習路線送上!讓你不再迷茫!

事件 其他 script for 數據類型 java開發 數據 這一 height 學習Java之前,先別急,靜下心來好好想想:1)你對學習Java是否有興趣?2)你是否能靜下心來堅持不懈地學習?嗯,這是個容易但又絕對不應該忽略的問題,你確信自己對Java感興趣、而且又有吃