在学习和调试iPhone 界面或者某个控件的过程中,递归地dump出UIView是一个了解界面结构很有效的方法。这样不仅可以更好地发现问题,还可以定制某些系统的标准控件。要解决这类问题,很自然会想到递归函数。实现如下:
void dumpViews(UIView* view, NSString *label, NSString *indent) {
Class klass = [view class];
NSString *classDescription = getFullClassDescription(klass);
if ([label compare:@""] == NSOrderedSame)
NSLog(@"%@ %@", classDescription, NSStringFromCGRect(view.frame));
else
NSLog(@"%@ %@ %@", label, classDescription, NSStringFromCGRect(view.frame));
for (NSUInteger i = 0; i < [view.subviews count]; i++)
{
UIView *subView = [view.subviews objectAtIndex:i];
NSString *newIndent = [[NSString alloc] initWithFormat:@" %@", indent];
NSString *newLabel = [[NSString alloc] initWithFormat:@"%@%d:", newIndent, i];
dumpViews(subView, newLabel, newIndent);
[newLabel release];
[newIndent release];
}
}
其中getFullClassDescription是用来获取某个类的继承关系描述:
NSString* getFullClassDescription(Class klass) {
NSString *description = [klass description];
while ([klass superclass])
{
klass = [klass superclass];
description = [description stringByAppendingFormat:@":%@", [klass description]];
}
return description;
}
利用dumpViews对某应用的主窗体进行“偷窥”后输出结果如下:
UIWindow:UIView:UIResponder:NSObject {{0, 0}, {320, 480}}
0: UILayoutContainerView:UIView:UIResponder:NSObject {{0, 0}, {320, 480}}
0: UINavigationTransitionView:UIView:UIResponder:NSObject {{0, 0}, {320, 480}}
1: UINavigationBar:UIView:UIResponder:NSObject {{0, 0}, {320, 44}}
0: UINavigationItemView:UIView:UIResponder:NSObject {{160, 8}, {0, 27}}
分享到:
相关推荐
Jenkins启动脚本,对java服务的jar启停。 JVM参数: JAVA_OPTS="-Xms512M -Xmx1024M -Xss256K -XX:+UseAdaptiveSizePolicy -XX:+UseParallelGC -XX:+...XX:ErrorFile=$HS_ERR_PATH -XX:HeapDumpPath=$HEAP_DUMP_PATH
dump1090-fa的旧dump1090 Web界面 安装 sudo bash -c "$(wget -q -O - https://raw.githubusercontent.com/wiedehopf/dump1090-retro-html/master/install.sh)" Web界面的URL 您可以在Raspberry Pi的IP地址上找到...
expdp userid='sys/1@orcl as sysdba' schemas=ncadmin directory=DATA_PUMP_DIR dumpfile=D:\nc56mgsdn.dmp logfile=D:\ncadmin.log version=10.2.0.1.0 ``` - **userid**: 这里指定了以`sys`用户身份登录,密码为...
expdp [username/password]@[database_connection] directory=dir_name dumpfile=file_name[:file_name] ... ``` 其中,`username/password`是数据库连接的用户名和密码,`database_connection`是数据库实例名,`...
- name : Postgres Dump Backup uses : tj-actions/pg-dump@v1 with : database_url : " postgres://test_user:test_user_password@localhost:5432/testdb " path : " backups/backup.sql " options : " -O ...
本文将详细讲解如何使用`jmap`中的`-dump:format=b,file=heapdump.hprof`选项来生成堆栈文件,并利用MAT(Memory Analyzer Tool)进行分析。 首先,`jmap`是Java HotSpot虚拟机的一个命令行工具,它可以提供关于JVM...
- restore:恢复由dump命令备份的文件系统。 - tar:打包工具,可以将多个文件打包成一个文件,并支持压缩和解压缩。 这份手册的整理日期为2005年8月30日,其内容是通过网络搜集整理而来。该手册对Linux系统中的...
例如,-XX:HeapDumpPath=./dump.core指定当JVM发生故障时,堆转储文件的保存路径。 3. -XX:<option>=<string>: 设置字符串类型的参数,如-XX:HeapDumpPath选项中的路径就是字符串值。 行为选项: - -XX:-...
1. 后台执行 一般运行linux上的程序都是执行 .sh 文件(./sh文件),那如果不影响当前CMD窗口的操作,需要后台运行怎么办呢? 这时就需要借助 nohup 和 & 命令来实现。 nohup java -server -Xms128M -Xmx512M -XX:...
《Dump-Monitor-WordLists:基于Dump Monitor Bot的词汇表构建与应用》 在信息技术领域,数据挖掘和分析是至关重要的部分,而“Dump Monitor Bot”则是这一过程中的一个重要工具。Dump Monitor Bot是一种自动化程序...
并行fastq转储并行fastq-dump包装器为什么和如何即使您已经拥有更快的资源(网络,IO,CPU),即使您已经下载了sra文件,NCBI fastq-dump有时也会非常慢。 该工具通过将工作划分为多个线程来加快过程。 这是可能的,...
* --dump-strings:等同于--dump-po-strings选项 * --help:显示Bash的帮助信息 * --init-file filename:在交互式shell中,从filename中读取并执行命令 * --login:等同于-l选项 * --noediting:在交互式shell中,...
etcd转储 命令行实用程序,用于转储/恢复etcd。...// Reads in the etcd_dump.json and restores it ' s values to the DB 帮助 : $ etcd-dump Usage: etcd-dump.js [options] [command] Comma
use Jar::Manifest qw(Dump Load); # Read a Manifest my $manifest_str = <<"MANIFEST"; Manifest-Version: 1.0 Created-By: 1.5.0_11-b03 (Sun Microsystems Inc.) Built-By: JAPH Name: org/myapp/foo/ ...
对于iPhone设备,`class-dump-z` 通常需要配合越狱环境来运行,因为它需要访问到应用程序的二进制文件。通过将工具部署到越狱设备上,开发者可以直接对目标应用进行分析,无需通过iTunes或其他方式导出二进制文件。 ...
28. **du/dump/dumpe2fs** - 位置:第八章、2.1 / 第九章、4.0 / 第八章、1.3 - 描述:磁盘使用情况统计、文件系统备份及文件系统信息查询命令。 以上仅为本书中部分知识点的概述,涵盖了从文件系统管理到系统...
《dump1090-tools:基于Python的ADS-B数据处理脚本详解》 在现代航空领域,自动相关监视广播(Automatic Dependent Surveillance-Broadcast, ADS-B)系统扮演着至关重要的角色,它允许飞机实时地向地面站和其他飞行...
go run go-mysql-dump-to-gdrive --help 参数 -db="": 数据库名称 -db-host="localhost":MySql 转储主机的名称 -db-user="": 你的 MySql dump USER 的名字 -dump-all=false: 如果设置脚本转储所有 MySql 数据库 -...
官网一直下载不了,找这个找了好久,因为生成的dump文件太大不得不用linux生成报告! 首先,dump生成: 配置jvm参数-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/mat/ java_pid1089.hprof 手工直接导,...
-- phpMyAdmin SQL Dump -- version phpStudy 2014 -- http://www.phpmyadmin.net -- -- 主机: localhost -- 生成日期: 2017 年 12 月 08 日 14:02 -- 服务器版本: 5.5.40 -- PHP 版本: 5.3.29 SET SQL_MODE="NO_...