用xcode和excel整理类的成员函数和成员变量

这个是以前情况才实用: 1. 没有debug symbol的类 2. 类被很多宏隔开了,都说不清楚那些宏的启用的 3. Category和Extension隔开了 整理函数: 1. 把程序运行起来,点击调试工具的暂停。 (或者调试中进断点break住) 2. 使用gdb搜索。 其中C++的类是 info functions MyClass::Objective-C类是...
阅读(1631) 评论(0)

xcode使用lldb的python脚本查看WebKit的WTF::String和Vector等基础类

webkit关于gdb的wiki:http://trac.webkit.org/wiki/GDB 它是自带了gdb和lldb的python脚本的,路径分别在 webkit workingcopy/Tools/gdb/webkit.py 直接看脚本内容http://trac.webkit.org/browser/trunk/Tools/gdb/webkit.py webkit workingc...
阅读(2755) 评论(0)

xcode反汇编调试iOS模拟器程序(二)看懂反汇编

这里当然不会从零开始讲汇编代码了,零基础的话可以看看 王爽 写的书《汇编语言》,请自己找度娘或谷哥要了。 这一节主要讲讲书上没有的东西。 在xcode中看到的汇编语法不是熟悉的intel格式,而是叫AT&T汇编。基本上只要懂intel,at&t会很快上手。两者的区别请参考这篇文章: AT&T汇编http://blog.csdn.net/bigloomy/article/details...
阅读(8236) 评论(1)

iOS伪亮度调节/控制

iOS 5.0之前的版本并没有开放控制系统亮度的接口,所以app能做到的只是比系统设置的亮度更暗,具体做法就是在整个app的keywindow之上再放一个window,设置黑色背景,通过控制alpha值来达到明暗变化。 - (void)installBrightnessWindow { m_brightnessWindow = [[UIWindow alloc] initWithFr...
阅读(3165) 评论(0)

Mac Safari VS Mobile Safari开启的宏

宏 Mac OS X 10.7 Safari  Mobile Safari iOS6.1模拟器版 Mobile Safari开了Mac Safari没开的 声明位置...
阅读(2197) 评论(1)

xcode反汇编调试iOS模拟器程序(三)查看Objective-C函数与参数

在Objective-C函数的入口处(第一行)加断点,可用esp指针来探查参数。 以esp为基址,往后的偏移分别是: 0:函数执行完毕后的返回地址(不是返回值的地址哦) 4:对象实例的指针,即self指针 8:selector,实际是一个char数组型的字符串,即char* 12:(如果有)第一个参数 …(前一个参数的基址+前一个参数所占的字节数):(如果有)第n个参数 由此...
阅读(6329) 评论(0)

xcode反汇编调试iOS模拟器程序(一)查看反汇编

iOS模拟器程序的实质就是Mac OS X程序,只不过它需要以模拟器为载体来运行显示。故它的反汇编代码指令都是x86 CPU的,不是真机上的arm指令。 研究模拟器程序的反汇编有两个目的,或叫做好处: 一是为了研究深入到iOS系统的类库,你可以较容易地发现私有API,以及看到系统的实现。 二是,很直接地,模拟器调试比真机快。而且,相信大多数人更懂x86指令,各类高校教材的汇编教程都不是arm...
阅读(16036) 评论(0)

WebCore::Widget浅探

研究方法: WebKit的xcode工程里以Widget为关键字全局搜索,查看相关函数名与注释新建一个使用了UIWebView的工程,运行时lldb里image lookup与Widget有关的类 探寻: Widget.h里有以下注释: // The Widget class serves as a base class for three kinds of objects: //...
阅读(3615) 评论(0)

iOS两个线程间嵌套发送同步消息

先上代码,主要逻辑可看注释。最好是直接下载demo再往下看了。demo下载地址:http://download.csdn.net/detail/hursing/5159144 @implementation ViewController #define kLevelsOfNesting 5 NSString *const kParameter = @"Parameter"; NSStr...
阅读(4301) 评论(0)

UIWebView下各种手势识别器的协作处理方案

前置阅读: 1. iOS私有API(二) UIGestureRecognizerDelegate的两个函数 2. iOS私有API(三) UIWebView下的手势识别器gestureRecognizer UIWebView下有很多的手势,它是怎么管理的呢?主要是两种途径:自管理和委托,即 1. 继承自UIGestureRecognizer或其子类,重载以下两个函数// same beha...
阅读(5326) 评论(1)

iOS私有API(三) UIWebView下的手势识别器gestureRecognizer

首先,UIWebView本身之上并没有手势识别器(gesture recognizer,下面简称手势),而是其子view有。 通过gdb或lldb,我们很容易看到UIWebView的subviews层级关系,下面是使用一个UIWebView打开百度首页时的情况: (lldb) po [g_webView recursiveDescription] $0 = 0x0ab202e0 >...
阅读(10731) 评论(1)

Mac上命令行获取iPhone/iPad的Identifier(UUID) 的方法

命令行(shell)获取 已通过USB连接到Mac Mini的iPhone/iPad的Identifier(UUID) 的方法:system_profiler SPUSBDataType | grep "Serial Number:.*" | sed s#".*Serial Number: "## 实用点:自动化测试的脚本不用每换一台机器就要修改待测试的iDevice的uuid了。   输...
阅读(6018) 评论(1)

WebKit的ManualTests & PerformanceTests

ManualTests即手工测试,大概包括: 1. 动画类的,如CSS3动画,JS动画 2. 音视频的支持 3. Drag&Drop (这个只有Mac Safari支持) http://trac.webkit.org/wiki/Manual%20Testing 4. SVG 5. webkit开发者用来重现和验证bug的页面。 https://bugs.wekit.org 共541...
阅读(1269) 评论(0)

iOS私有API(二) UIGestureRecognizerDelegate的两个函数

UIGestureRecognizerDelegate有两个没公开的函数,只要重载了就会被调用。 即所有的UIGestureRecognizer子类.delegate = someInstance; 经过set以后,只要这个delegate实例里有这两个函数,就会被调用进入。经过验证,这两个api是可以通过apple审查上app store的。 - (BOOL)gestureRecognize...
阅读(10849) 评论(0)

iOS私有API(一) -[UIApplication _cancelAllTouches]

这个api会令当前的所有手指操作失效,即令所有的UITouch变成cancelled状态,所有的UIView和UIGestureRecognizer都会触发touchesCancelled:withEvent:事件。 使用场景: 1. 模拟UIPopoverController时的行为,当popover弹出时,其他手势都应该被cancelled掉,从而保证popover弹出后继续移动手指不会再...
阅读(1941) 评论(0)

二进制/十六进制转浮点数的编程(互转类似)

转换的程序: // 输入十进制整数,输出同样内存排布的float表示 inline float i2f(int i) { float f = 0; assert(sizeof(int) == sizeof(float)); memcpy(&f, &i, 4); return f; } inline double ll2d(long long...
阅读(3274) 评论(0)

Xcode3创建和使用iOS的dylib动态库

此文真正写于2011年4月,当时是xcode3.X版本。xcode4的路径会不同,方法请查看 Xcode4.6创建和使用iOS的dylib动态库。 文中提到的压缩文件在此下载http://download.csdn.net/detail/hursing/5159352 1. 用Xcode同时打开两个文件 “/Developer/Platforms/MacOSX.platform/De...
阅读(7401) 评论(14)

利用Objective-C运行时hook函数的三种方法

方法一,hook已有公开头文件的类: 首先写一个Utility函数: #import inline void exchangeMethod(Class aClass, SEL oldSEL, SEL newSEL) { Method oldMethod = class_getInstanceMethod(aClass, oldSEL); assert(oldMethod);...
阅读(18872) 评论(8)

在windows和mac上以特定ua启动chrome的脚本

mac的 #! /bin/bash open -a /Applications/Google\ Chrome.app/ --args --user-agent="Mozilla/5.0 (iPad; CPU OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B176 Safa...
阅读(2451) 评论(0)

Mac OS X编译最新webkit(2013-03-15)

安装Xcode,4.5版本或以上。必须要安装的方式,不能copy。 xcode菜单Xcode->Preferences...->Downloads->Components栏选择Command Line Tools的Install。不做这步的话,可能会出现warning:“The specified SDK “Current OS X” does not appear to have all...
阅读(4880) 评论(7)
    个人资料
    • 访问:1013713次
    • 积分:9432
    • 等级:
    • 排名:第2013名
    • 原创:173篇
    • 转载:0篇
    • 译文:0篇
    • 评论:539条
    联系方式
    博客专栏
    最新评论