摘要:
手势识别——Gesture Recognizer•iOS3.2版本之后,苹果推出了手势识别(Gesture Recognizer),其目的是:–简化开发者的开发难度–统一用户体验••iOS目前支持的手势识别–UITapGestureRecognizer(点按)–UIPinchGestureRecog... 阅读全文
摘要:
UITouchUITouch类中包含五个属性•window:触摸产生时所处的窗口。由于窗口可能发生变化,当前所在的窗口不一定是最开始的窗口•view:触摸产生时所处的视图。由于视图可能发生变化,当前视图也不一定时最初的视图•tapCount:点按操作和鼠标的单击操作类似,tapCount表示短时间内点按屏幕的次数。因此可以根据tapCount判断单击、双击或更多的点按•timestamp:时间戳记录了触摸事件产生或变化时的时间,单位是秒•phase:触摸事件在屏幕上有一个周期,即触摸开始、触摸点移动、触摸结束,还有中途取消。通过phase可以查看当前触摸事件在一个周期中所处的状态。phase是 阅读全文
摘要:
•UIKit可识别三种类型的输入事件:–触摸事件–运动(加速计)事件–远程控制事件IKit框架将触击信息封装为一个UIEvent对象,并派发给恰当的视图(有关UIKit如何将事件递送给您的视图的详细解释,请参见“事件的传递”部分)。 视图的事件处理方法可以通过下面的方式来响应事件: 调整视图或其子视图的属性变量(边框、边界、透明度等)。 将视图(或其子视图)标识为需要修改布局。 将视图(或其子视图)标识为布局需要重画。 将数据发生的变化通报给控制器。 当然,上述的哪些事情需要做及调用什么方法来完成是由视图来决定的。 如果视图被标识为需要重新布局,UIKit就调用视图的layoutSubview 阅读全文
摘要:
三种:•NSThread:–优点:NSThread 比其他两个轻量级,使用简单–缺点:需要自己管理线程的生命周期、线程同步、加锁、睡眠以及唤醒等。线程同步对数据的加锁会有一定的系统开销•NSOperation:–不需要关心线程管理,数据同步的事情,可以把精力放在自己需要执行的操作上–NSOperation是面向对象的•GCD:–Grand Central Dispatch是由苹果开发的一个多核编程的解决方案。iOS4.0+才能使用,是替代NSThread, NSOperation的高效和强大的技术–GCD是基于C语言的无论使用哪种多线程技术都可以使用[NSThread currentThrea 阅读全文
摘要:
(比如游戏升级,传进来升级信息后,好多东西都要更改,就要用到工厂模式)在简单工厂中,我们的工厂类一次只可以处理一类产品。那么如果我们想处理多类产品,简单工厂是满足不了的。必须要用抽象工厂设计模式。我们先从概念上来了解下什么是抽象工厂设计模式:•1、提供一系列相互依赖对象的创建工作•2、封装对象常规的创建方法(new)•3、提供统一调用访问方法的方式•4、避免调用访问方法和具体对象创建工作的紧耦合这些概念性的东西看起来比较抽象,直接上图如上图所示,我们如何去更好的理解抽象工厂,首先 我们要分清在这个模式中的几类角色。有抽象工厂,实体工厂,抽象产品,实体产品,客户(调用代码的类)。•抽象工厂设计模 阅读全文
摘要:
对象所有权与引用计数(转)当一个所有者(owner,其本身可以是任何一个Objective-C对象)做了以下某个动作时,它拥有对一个对象的所有权(ownership):1. 创建一个对象。包括使用任何名称中包含“alloc”、“new”、或者“copy”的方法。2. 保留(retain)一个对象。一个对象可以有多个所有者,一个所有者也可以拥有多个对象。相应的,引用计数增减的基本规则是:1.当所有者创建一个对象时,该对象的引用计数为1。2.当所有者保留它时,该对象的引用计数加1。3.当所有者释放(release)它时,该对象的引用计数减1。与此相关的,当一个所有者对于一个对象的引用计数的增减总计 阅读全文
摘要:
1、Model不允许和Controller,View打交道。也就是Model根本不知道谁会用自己,Model中不能有任何对 Controller和View的引用。正所谓:Don't call me, I will call you.就是给Model设计说的。我们再想想,在一般程序中Model到处被拿去用,它要维护到底谁用真的很难。那你会问:兄弟,那当Model的数据 变了,我怎么通知视图更新呢?这里常用的机制就是广播模式,或者电台模式,或者事件机制都行。在iOS中有两种支持机制:Notification和 KVO(Key-Value Observing)。这两种东西原理差不多,KVO是 阅读全文
摘要:
指针是没什么类型分的,但是指针指向的内存存储的数据就有类型,指针的类型就是指向内存数据的类型不告诉系统指向的是什么类型,系统就不知道该去多少连续内存作为一个数据,不同的数据在内存中存储的位数不同.16位int 2 字节long 4 字节float 4 字节dobule 8 字节char 1 字节32位int 4 字节long 4 字节float 4 字节dobule 8 字节char 1 字节 阅读全文
摘要:
ARC是编译层面的东西,垃圾回收是程序运行以后的机制,两者不可混为一谈苹果觉得垃圾回收这种严重影响电源使用效率的特性,同移动设备天生的实时性是相冲突的。但是在iOS 5当中苹果引入了自动内存管理机制,称作ARC。 阅读全文
摘要:
frame指的是:该view在父view坐标系统中的位置和大小。(参照点是父亲的坐标系统)它的坐标原点是随着父View位置的改变而改变的bounds指的是:该view在本身坐标系统中 的位置和大小。(参照点是本身坐标系统)它的坐标原点是相对于整个系统的坐标的,不会随着父view 的改变而改变 阅读全文
摘要:
OS消息推送的工作机制可以简单的用下图来概括:Provider是指某个iPhone软件的Push服务器,APNS是Apple Push Notification Service的缩写,是苹果的服务器。上图可以分为三个阶段:第一阶段:应用程序把要发送的消息、目的iPhone的标识打包,发给APNS。第二阶段:APNS在自身的已注册Push服务的iPhone列表中,查找有相应标识的iPhone,并把消息发送到iPhone。第三阶段:iPhone把发来的消息传递给相应的应用程序,并且按照设定弹出Push通知。从上图我们可以看到:1、应用程序注册消息推送。2、iOS从APNS Server获取devi 阅读全文
摘要:
委托代理:委托代理(degegate)顾名思义,把某个对象要做的事情委托给别的对象去做。那么别的对象就是这个对象的代理,代替它来打理要做的事。反映到程序中, 首先要明确一个对象的委托方是哪个对象,委托所做的内容是什么。委托机制在很多语言中都用到的,这只是个通用的思想,网上会有很多关于这方面的介绍。 那么在苹果开发过程中,用到委托的程序实现思想如下,我主要拿如何在视图之间传输信息做个例子。譬如:在两个页面(UIView视 图对象)实现传值,用委托(delegate)可以很好做到。 代理设计模式1.使用场合:1> 当A对象发生了一些事情,想告诉B对象,就让B对象成为A对象的代理2> B 阅读全文