【分享】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複製到真機上並修改路徑。
相關推薦
【分享】iOS下view hierarchy工具
GUI程式開發過程中,龐大的View樹總每次總令人花費不少時間進行除錯。 當然,程式設計師總能為這個鬱悶的過程開發到方便的工具---view hierarchy。 如果你曾經開發過android程式,那麼你應該會了解過Hierarchy Viewer(有可能被牆) 這個官
【分享】Windows日誌查看工具分享
hub class 後來 windows.h int href 問題 命令 lin 在Linux下查看日誌,使用tail、grep、find等命令還比較方便,後來需要在Windows中處理一些問題,發現缺少類似的功能,比如tailf實時輸出,於是在網上收集了一些相關的小
【轉】ios下audio不能自動播放的問題
IE 能夠 mov audio head clas cli script device <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8">
【PHP】PHP7 下安裝並使用 xhprof 效能分析工具
git clone https://github.com/longxinH/xhprof 安裝 xhprof cd xhprof/extension/ phpize ./configure make make install 然後在/etc/php.
【iOS】iOS下高斯模糊效果的實現
其實有很多種實現方式,但是沒必要了解那麼多,簡單實用就行,選取一種效能相對來說比較好的方式 效果圖如下(高斯0.1): 程式碼: 需要匯入 #import <Accelerate/Accelerate.h> UIImage *ima
【騰訊Bugly乾貨分享】iOS黑客技術大揭祕
“8小時內拼工作,8小時外拼成長”這是大家共同的理想。除了每天忙於工作外,我們都希望能更多地區吸收領域內的新知識與新技能,從而走向人生巔峰。 Dev Club 是一個交流移動開發技術,結交朋友,擴充套件人脈的社群,成員都是經過稽核的移動開發工程師。每週都會
【乾貨分享】C# 實體類生成工具
前言: 專案實戰中不論是業務編碼還是通用編碼,總會歸納出一些通用的工具類。放入專案中一勞永逸,讓兄弟姐妹們避免編寫重複程式碼。所以利用了工作之餘的時間,將這些散落在多個專案中精緻優雅的工具類,歸納起來形成工程,方便後續工作的使用和便捷開發。 根據實際需求,編寫了此工具。目前只支援SQLSer
【Linux】Linux下統計當前文件夾下的文件個數、目錄個數
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
【轉載】Linux下chkconfig命令詳解
name scrip 再次 http 缺省 重新 禁止 level pool chkconfig命令主要用來更新(啟動或停止)和查詢系統服務的運行級信息。謹記chkconfig不是立即自動禁止或激活一個服務,它只是簡單的改變了符號連接。 使用語法:chkconfig [--
【分享】不知道怎麽學java?java學習路線送上!讓你不再迷茫!
事件 其他 script for 數據類型 java開發 數據 這一 height 學習Java之前,先別急,靜下心來好好想想:1)你對學習Java是否有興趣?2)你是否能靜下心來堅持不懈地學習?嗯,這是個容易但又絕對不應該忽略的問題,你確信自己對Java感興趣、而且又有吃