- 博客(42)
- 收藏
- 关注
原创 IOS 基于HTTP协议的断点续传
> 原理其实断点续传的原理很简单,就是在 Http 的请求上和一般的下载有所不同而已。打个比方,浏览器请求服务器上的一个文时,所发出的请求如下:假设服务器域名为 wwww.sjtu.edu.cn,文件名为 down.zip。GET /down.zip HTTP/1.1Accept: image/gif, image/x-xbitmap, image/jpeg, image/pj
2013-08-26 14:59:40 1265
转载 iphone——NSRunLoop概念
Run loop mode是一组用于监控的input sources和timers以及一组用于通知的run loop observers。每次运行一个run loop,你指定(显式或隐式)run loop的运行模式。当相应的模式传递给run loop时,只有与该模式对应的input sources才被监控并允许run loop对事件进行处理(与此类似,也只有与该模式对应的observers才会被通
2013-08-23 17:21:24 700
转载 iphone——Thread,RunLoop初识
每个程序至少运行于一个thread中(称为main thread),你可以认为每个thread是一个独立的处理器,每个都并行的运行着。Thread是用来为在同一个进程中并行的执行多处代码。 如果你的应用程序只有一个thread,则这个thread需要完成这个应用的所有事情。它必需对事件进行响应,更新应用程序窗口以及完成应用结果的所有运算。这样的话问题就来了,只有一个thread且
2013-08-23 17:20:34 625
转载 iphone——使用run loop对象
如果你在非main thread中运行run loop,你必须至少为该run loop添加一个input sources或timer。如果你运行的run loop没有监控任何的输入源,该run loop将在你运行后立即退出。Run loop observer 使用detachNewThreadSelector:toTarget:withObject:创建一个thread:
2013-08-23 17:19:28 711
转载 微信的研究
下面是个人研究微信android 4.2版本的一些结果,不一定正确。1. 微信android使用的是amr编码;iphone未知,估计是aac,转码会在微信服务器上完成。android上使用了speex这个库,估计是为了达到边录边发。在服务器做格式转换确实比客户端方便多了,用ffmpeg就可以搞定了,也是瘦客户端的一种思路,而且可以依此延伸很多扩展业务。2. 微信android最新
2013-08-20 17:03:14 1058
原创 函数式编程初探
不仅最古老的函数式语言Lisp重获青春,而且新的函数式语言层出不穷,比如Erlang、clojure、Scala、F#等等。目前最当红的Python、Ruby、Javascript,对函数式编程的支持都很强,就连老牌的面向对象的Java、面向过程的PHP,都忙不迭地加入对匿名函数的支持。越来越多的迹象表明,函数式编程已经不再是学术界的最爱,开始大踏步地在业界投入实用。
2013-08-19 16:55:28 1020
原创 底层多线程pthread
在进行os x和ios开发的时候,经常会用到多线程来提高性能。我们经常用操作对象(operation objects)和GCD来实现并发,但是os x和ios还提供了另外的接口来实现多线程,那就是POSIX threads API。POSIX是一个标准,是开发跨平台多线程的最佳方法。它是基于c语言的,很高效也很方便。POSIX标准包括3方面的内容,1,线程管理。2,互斥量(mu
2013-08-19 16:13:42 1039
转载 ios在系统代码中注入自己的代码
今天pm提了一个新的需求,需要监听整个程序的事件,在网上查询了下实现的方式。在stackoverflow中发现了一种实现方式,创建UIApplication的一个子类,在这个子类中覆盖UIApplication中的sendEvent方法,在其中实现自己的功能之后,然后调用UIApplication的sendEvent方法来实现事件分发,代码如下:子类的名称为MyApplication.
2013-08-19 11:05:59 849
转载 iOS开发知识与能力体系 思维导图
越写越多,才发现自己这两年学到的东西太多了。整理不完,也许思维导图都不是最好的承载工具了,以后再继续补充。分辨率为2042*3917,点击查看大图:
2013-08-18 21:22:36 1224
原创 AT&T汇编
AT&T汇编和8086汇编语言虽然两者很相似,但是还是不能根据8086的语法规则来读AT&T汇编的吧,所以还是要看看AT&T汇编的语法规则,因为在读内核代码时,跟硬件打交道的部分代码是用AT&T汇编编写的,所以不可避免的会遇到AT&T汇编,下面先来看看AT&T汇编的语法规则吧。
2013-08-18 20:33:06 848
转载 IDA反汇编/反编译静态分析iOS模拟器程序(一)话说IDA
上个月写了一系列文章《xcode反汇编调试iOS模拟器程序》,是使用xcode来动态反汇编分析iOS模拟器程序的。这个系列则是静态分析,用到IDA来做反汇编/反编译。一些概念不会在此重复,遇到时可回读xcode反汇编系列。之前有提到一些IDA的常识和下载地址,可看 《IDA Pro权威指南》读书笔记,同时这本书也是更深入挖掘IDA的参考书,只不过书里不会提到Objective-C。本系列使用的
2013-08-18 18:50:57 1738
转载 xcode反汇编调试iOS模拟器程序(一)查看反汇编
iOS模拟器程序的实质就是Mac OS X程序,只不过它需要以模拟器为载体来运行显示。故它的反汇编代码指令都是x86 CPU的,不是真机上的arm指令。研究模拟器程序的反汇编有两个目的,或叫做好处:一是为了研究深入到iOS系统的类库,你可以较容易地发现私有API,以及看到系统的实现。二是,很直接地,模拟器调试比真机快。而且,相信大多数人更懂x86指令,各类高校教材的汇编教程都不是arm
2013-08-18 18:50:14 871
转载 利用Objective-C运行时hook函数的三种方法
方法一,hook已有公开头文件的类:首先写一个Utility函数:[cpp] view plaincopy#import inline void exchangeMethod(Class aClass, SEL oldSEL, SEL newSEL) { Method oldMethod = class_getInstanceMethod(aClas
2013-08-18 18:47:21 1239
原创 反汇编(Disassembler) iPhone
什么是反汇编?反汇编就是把可执行的二进制文件转为汇编代码,进而可以研究该程序。IDA Pro Adv v5.2 版本起已直接支援 iPhone ARM 代码的静态反汇编分析。IDA Pro Adv v5.5 更新版本支持 ARMv7 反汇编。
2013-08-18 17:35:00 2201
转载 iOS开发用到的Mac工具
mark一下吧,只是个人经验。Xcode,IDEgdb,lldb,命令行调试工具Simulator,模拟器Application Loader,(上传app store用)Instruments,各种开发辅助工具,性能测试、自动化测试、内存泄露检测等Chrome,看网页、调试网页Safari,可以辅助调试ios模拟器的网页TextMate,简单的文本编辑器
2013-08-18 17:25:44 818
原创 移动设备客户端安全
移动设备客户端安全 http://m.qq.com/security_lab/news_detail_178.html有用的信息:自检验,防止二次打包,避免躺枪。有对用户造成扣费、流量消耗、读取隐私、弹广告等几种伤害。“打包党”针对手机游戏二次打包篡改,一般通过植入病毒代码或者广告插件的方式来攫取利润。而打包植入广告的情况尤其普遍。病毒 技术手段:1.Activity/Inte
2013-08-18 17:24:09 902
转载 Xcode的控制台调试命令 LLVM lldb
XCode4.0以后,编译器换成了LLVM 编译器 2.0与以前相比,更加强大:1.LLVM 编译器是下一带开源的编译技术.完全支持C, Objective-C, 和 C++.2.LLVM 速度比 GCC快两倍,建立的程序也会运行的更快. 因为它更好的利用现代的芯片的结构.3.LLVM和Xcode 4完全的整合在一起.包括关键字高亮,代码完整性等全都是由LLVM语法分析器来分析的.
2013-08-18 11:14:01 1447
转载 iOS面试题汇总(一)
1.Difference between shallow copy and deep copy? 浅复制和深复制的区别? 答案:浅层复制:只复制指向对象的指针,而不复制引用对象本身。 深层复制:复制引用对象本身。 意思就是说我有个A对象,复制一份后得到A_copy对象后,对于浅复制来说,A和A_copy指向的是同一个内存资源,复制的只不过是是一个指针,对象本身资源 还是只有一份,那如果我们对A
2013-08-18 10:59:58 710
转载 Xcode3创建和使用iOS的dylib动态库
此文真正写于2011年4月,当时是xcode3.X版本。xcode4的路径会不同,方法请查看 Xcode4.6创建和使用iOS的dylib动态库。文中提到的压缩文件在此下载http://download.csdn.net/detail/hursing/51593521. 用Xcode同时打开两个文件“/Developer/Platforms/MacOSX.platform/De
2013-08-18 10:37:35 1078
原创 通过NSTask用Cocoa执行perl脚本
本文将用一个例子帮助你理解如何使用NSTask,例子通过在Cocoa中执行一个perl脚本,实现去掉给定NSString中的所有HTML标签。 这里是一个简单的perl脚本,文件名是stripper.pl,功能是去掉所有HTML标签。 #!/usr/bin/perlwhile ( $_ =~ s/[^>]*>//gs;print $_;}
2013-08-16 11:47:46 616
转载 Core Animation的学习备忘录
研究Core Animation已经有段时间了,关于Core Animation,网上没什么好的介绍。苹果网站上有篇专门的总结性介绍,但是似乎原理性的东西不多,看得人云山雾罩,感觉,写那篇东西的人,其实是假设读的人了解界面动画技术的原理的。今天有点别的事情要使用Linux,忘掉了ssh的密码,没办法重新设ssh,结果怎么也想不起来怎么设ssh远程登陆了,没办法又到网上查了一遍,太浪费时间了,痛感忘
2013-08-16 11:44:01 609
原创 Objective-C的Initialize初始化方法研究
这篇文章介绍了Objective-C比较底层的内容,主要讲解initialize和init方法的区别。从这篇文章中我们不光可以了解Objective-C在初始化时所做的事情,更可以学习到一些如何研究Objective-C语言内部到底做了什么的方法,这样你也可以自己对更深层次的内容进行探寻。
2013-08-16 11:39:24 907
原创 c语言中 关系运算符优先级
优先级:非(!)为最高与(&&)次之或(||)最低优先级是这样的if((!a)||(b&&c))。先执行!a,如果不为零,所以后面就不执行了。
2013-08-16 10:20:03 1187
原创 开发者所需要知道的iOS7 SDK新特性
无论是对于开发者或用户来说iOS7都是非常重要的一次更新,iOS7对UI进行了彻底的重新设计。另外为了创建2D和2.5D游戏,iOS7引进了一套全新的动画系统。在iOS7中,多任务的增强、点对点的连接,以及其它一些重要的特征都足以使iOS7意义非凡。
2013-08-15 11:39:33 1439
原创 IOS 常用的安装包 deb、ipa 和 pxl
目前 iOS 平台上常见的安装包有三种,deb、ipa 和 pxl。其中 deb 格式是 Debian 系统(包含 Debian 和 Ubuntu )专属安装包格式,配合 APT 软件管理系统,成为了当前在 Linux 下非常流行的一种安装包。进入 2.x 时代之后有 Cydia 作者 Jay Freeman(saurik) 移植到 iPhone 平台上,一起的还有 APT 软件管理系统。
2013-08-15 11:28:43 1314
原创 IPhone越狱原理总结
越狱(JailBreaking)的最终目的就是获取IPhone的root访问权限,使之能够安装第三方软件。仅仅越狱还不能解决了自由选择运营商的问题,越狱进一步就是解锁(Unlocking),也即是破解IPhone手机服务,使之不受特定电信运营商绑定。
2013-08-13 17:18:58 2818
原创 如何绕过 Appstore 做到在不需越狱的情况下安装盗版软件的?
apple的政策(最初)如下:一个id最多可授权5台电脑,可以授权无数台ios设备。5这个限制,一般认为是通过硬盘序列号扫瞄来确认的。而对ios设备数量则无限制。pp助手的原理,即是通过技术手段为每个用户修改或虚拟出一个相同的硬盘序列号。接着,"这台电脑"取得一个公共id的授权。最后,"这台电脑"把公共id买过的app装到某ios设备里。
2013-08-13 16:41:10 8455
转载 IOS中如何Hook消息
年过完了,该收心了,该开始学习了。 我们都知道在windows下可以通过API轻松的hook很多消息,IOS里面貌似还没有现成的API(可能是我还没发现吧),前段时间碰巧看到Objective-C运行时的一些东西,于是心想着是不是可以尝试一下实现hook的功能。 为什么要hook消息呢,因为有些时候我们可能无法直接去继承一个类,却又想先截获某些消息做一些处理,然后再接着进行正常的处理流
2013-08-13 09:24:20 844
原创 ARC 与内存管理
ARC: Automatic Reference Counting (自动引用计数)ARC 是 iOS 5 后推出的一项为Objective - C程序在编译时提供自动内存管理的功能。ARC可以让你把注意力集中在你感兴趣的代码,减少开发中的内存管理步骤,简化开发。
2013-08-08 17:17:57 995
转载 敏捷开发实践(3) — 培养敏捷开发团队
敏捷开发实践(3) — 培养敏捷开发团队 Agile = 适应性 + 持续可能性敏捷开发的真谛是适应变化的情况,让开发持续,并改善其过程。它并不是单纯的用来缩短发布时间,提高工作效率,增强产品品质的手段,而是强调一种随机应变,持续改善的理念,一种过程思想。学习敏捷开发,首先考虑的是人。软件开发以人为本软件是由人开发出来的,这是软件开发的大前提,不管你是用敏捷还是不用敏捷。如果回
2013-08-08 17:03:43 1168
转载 敏捷开发实践(2) — 敏捷软件开发者的习惯
敏捷开发实践(2) — 敏捷软件开发者的习惯 敏捷开发的最小单位就是参与敏捷开发的个人。将这些敏捷开发者聚集起来,就形成了敏捷开发团队。正如上回介绍的,敏捷开发是一种以人为核心、迭代、循序渐进的开发方法,它以最大可能地发挥团队的作用为目的。根据需要,随时改善,以降低软件开发中的风险。敏捷开发者的态度敏捷开发者首先需要有忠实,勤恳的态度,在此之上要有持续改善和迅速达成目标的紧迫感。如
2013-08-08 17:02:57 1074
转载 敏捷开发实践(1) — 走进敏捷软件开发
敏捷开发是什么敏捷软件开发是一个概念意义上的框架,用来取代软件工程项目的概念;它强调在项目的整个生命周期中,拥抱并促进由于软件进化式的发展所带来的变化。简单的说,敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,
2013-08-08 17:00:37 1164
转载 ARC总结
通过前面几篇文章的介绍,我想大家应该对ARC有了一个比较完整的理解。最后,我们来对ARC做一个总结,并把一些未涉及到的细节部分再深入讨论一下。内存管理基本原则内存管理的依循下面的基本原则自己生成的对象,那么既是其持有者 不是自己生成的对象,也可成为其持有者(一个对象可以被多个人持有) 如果不想持有对象的时候,必须释放其所有权 不能释放已不再持有所有权的对象不管ARC有没有效
2013-08-08 16:50:32 740
原创 ARC与非ARC下的Weak-Strong Dance
ARC与非ARC下的Weak-Strong Dance,在使用block过程中,经常会遇到retain cycle的问题。
2013-08-08 16:43:15 4430
原创 IOS开发笔记--UIKit框架之UIWindow
UIWindow是一种特殊的UIView,通常在一个程序中只会有一个UIWindow,但可以手动创建多个UIWindow,同时加到程序里面。
2013-08-08 16:29:26 1136
转载 IOS 如何选择delegate、notification、KVO?
前面分别讲了delegate、notification和KVO的实现原理,以及实际使用步骤,我们心中不禁有个疑问,他们的功能比较类似,那么在实际的编程中,如何选择这些方式呢? 在网上看到一个博客上详细的分析了三者之间的区别以及各自的优势,博文地址为http://blog.shinetech.com/2011/06/14/delegation-notification-and-obs
2013-08-08 16:27:47 696
转载 KVO的概述与使用
一,概述KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知。简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者了。二,使用方法系统框架已经支持KVO,所以程序员在使用的时候非常简单。1. 注册,指定被观察者的属性,2. 实现回调方法3. 移除观察三,实例:
2013-08-08 16:19:33 667
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人