摘要:
在进行iOS开发过程中,经常会遇到各种各样的网络访问问题,以前苦于没有抓包工具,很多网络问题解决起来很痛苦。现在终于好了,本文提供两种方式进行网络抓包:1.网络共享 + 可视化抓包工具基本原理原理比较简单,ios设备通过代理方式共享连接mac电脑的无线网卡,使用抓包工具抓包,然后进行分析(我们推荐使用Wireshark,在MAC系统上也可以使用Paros工具)。现在以MAC系统下Paros工具为例,详细描述下抓包过程:操作步骤1)首先将MAC电脑的以太网共享给airport,使iOS设备能够通过wifi连接打开系统偏好设置,找到共享,选择internet共享,在右侧“通过以下方式将”选择以太. 阅读全文
摘要:
开发环境: iphone4 (ios4.3.2)使用hook截获系统处理通知事件,然后进行相应的处理来达到截获的效果。目前的截获不是很完美,黑名单中的人打电话时会先出现“嘟.."声之后才会提示所拨打的用户正在通话中……前提:需要class-dumpCoreTelephony framework,并配置hook开发环境1. 在说截获之前,先说说dlsym的使用我们通常会在网上看到一些函数具有我们需要的功能,然后我们在class-dump出的头文件中查找去找不到,但是使用grep在framework中确实可以搜索到相应的符号,导致使用上出现一些麻烦。此时我们就可以使用dlsym来从动态库 阅读全文
摘要:
所谓的短信截获,可以被程序提前接受到,经过过滤以及相应的处理,然后发送到手机的收件箱中。ios3上的短信截获通过可以通过一些私有的api即可完成,网上的教程也较多,这里不在重复。前段时间在调研的ios4上的短信截获,在网上也很难找到相应的,较完整的资料,刚好前段时间学习了hook,故周末抽了点时间使用hook重新调研了下,这里做个记录,以防止后期遗忘.测试环境: iphone4 ios4.3.2 已越狱1. 搭建hook demo开发环境,可以参照我的另一篇文章,这里不再重复。对接受短信的函数进行hook,并进行相应处理与过滤,在通过到手机上。2. class-dumpSMSCTServer. 阅读全文
摘要:
越狱后的手机的数据库文件可以自由访问,通话记录通常保存在call_History.db这个文件中.只要读取这个文件,我们就能知道目前手机的通话记录了下面这段代码检测手机是否能读取到Call_History.dbNSFileManager *fileManager = [NSFileManager defaultManager];NSDirectoryEnumerator *dirnum = [[NSFileManager defaultManager] enumeratorAtPath: @"/private/"];NSString *nextItem = [NSStrin 阅读全文
摘要:
随着拥有多个硬线程CPU(超线程、双核)的普及,多线程和异步操作等并发程序设计方法也受到了更多的关注和讨论。本文主要是想与园中各位高手一同探讨一下如何使用并发来最大化程序的性能。 多线程和异步操作的异同 多线程和异步操作两者都可以达到避免调用线程阻塞的目的,从而提高软件的可响应性。甚至有些时候我们就认为多线程和异步操作是等同的概念。但是,多线程和异步操作还是有一些区别的。而这些区别造成了使用多线程和异步操作的时机的区别。 异步操作的本质 所有的程序最终都会由计算机硬件来执行,所以为了更好的理解异步操作的本质,我们有必要了解一下它的硬件基础。 熟悉电脑硬件的朋友肯定对DMA这个词不陌生... 阅读全文
摘要:
iPhone自带的备忘录软件有着不错的用户界面,那它的文本线是怎么实现的呢?不知道.知道的大神请留下解决方案.不过几个几天的摸索,总算是想出了一条解决方案来,下面简单的描述下,希望能说的清楚.首先我觉得需要二张图片,一张是编辑区域上面的没有横线的黄色区域,一张是编辑区域带横线的黄色区域需要的组件有:UIScrollView一个,UIView一个,UITextView一个叠加方式为:[UIScrollView addSubView:[UIView addSubView:UITextView]];UIScrollView的背景设为第一张图片形式,即_scrollView.backgroundCol 阅读全文
摘要:
在函数声明或定义之前使用了该函数,而且这些函数只在该类中使用,则可以将其声明为私有函数;需要在别的文件中使用的话,则可以将其定义在.h外部文件中,在需要使用的地方import该头文件即可。例如:// 某个类的私有函数定义,也即该类的一个类别。将声明放在该处,而将定义放在类中。// TestObject即为需要定义私有函数的类,Private则为类别名,虽然可以任意选择,但建议定义为Private之类的知名知义的词。不建议使用private,因为private是C++等面向对象语言中的关键字,在toolchain或直接使用gcc编译的话,则会需要一些编译错误。@interface TestObj 阅读全文
摘要:
转载自:http://blog.csdn.net/kmyhy/article/details/5753090本文的目的,是研究有没有可能在一个TableView中呈现树形数据,尤其是树形菜单。众多的网络资料都强调,Cocoa框架不支持树形视图,苹果推荐程序员使用TableViewController+NavigationController的方式展现树形菜单。如果2-3层的树形数据还可以忍受,万一层次稍多一点,必须反复的用导航按钮在视图中转来转去,显然并不太方便。何况笔者认为2-3层的导航也要切换多次视图,也是一种浪费。一、搭建基本框架 1二、实现树节点 2三、实现树 3四、实现TreeVie 阅读全文
摘要:
在ViewController中重写touch的事件的方法体就可实现特定的touch功能(但这些touch事件会被加在之上的tableView或scrollView等屏蔽,希望知道解决方案的留下方法).下面代码实现清扫事件- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { messageLabel.text =@"Touches Began"; //开始触摸的方法 [self updateLabelsFromTouches:touches];}- (void)touchesCancelled: 阅读全文
摘要:
tableView:cellForRowAtIndex函数当表视图需要一个表视图单元的数据时调用,一般用cellForRowAtIndex参数作为数据来源的索引,直接作为数组下标即可。如果用全局变量作为数据索引,就有两个问题。 1.全局变量需要与实际的数据在数组中的位置同步,需要添加全局变量增加或减小的代码。2.在重新绘制表格的时候需要把全局变量清零,就是当全局变量等于数组元素个数的时候。例如在拨号程序中,原数组中并不是每个元素的数据都是可用的表格单元数据,需要判断布尔属性,控制全局索引自增。在函数开头,添加判断全局变量是否等于数组元素个数的代码,将全局变量清零,否则在上下拖动表格时会出现数. 阅读全文