随笔分类 - IOS设计模式
摘要:OK ,为什么会写这篇文章呢?因为最近接触老一些面试者,总感觉他们认为做应用只是纯粹的搭个界面,殊不知不仅仅如此。我们从哪几个方面来测试应用的性能呢?这里,因为没用真机来调试所以不会出现fps选项。下面再来一个这里可以测试fps ,提示必须真机来运行,fps为0因为你没用动。fps接近于60帧,那么你的app是相当的流畅,当然代价是要付出很多很多,然而说这些没有什么卵用,上面看的是翻天覆地的变化...
阅读全文
摘要:命令行设计模式:命令设计模式将一个请求或行动作封装为对象。这个封装请求比原始的请求要灵活并且可以在对象之前被传递,存储,动态修改或者放进队列里面。苹果苹果公司实现这种模式使用Target-Action机制和Invocation。你可以阅读更多关于Target-Action机制在苹果的文档但是Invocation类可以包含一个目标对象,方法选择器和一些参数。当需要的时候这个对象可以被动态的改变。这是一个完美的命令模式的例子。它将发送对象从接收对象和对象和可以持续请求或一连串的请求。怎么使用命令设计模式?在你进入invocation 操作之前。你需要设置framework来支持撤销操作。你必须定义
阅读全文
摘要:版权声明:原创作品,谢绝转载!否则将追究法律责任。备忘录模式捕获和具体化对象的内部状态。换句话说,它可以节省你的东西后来,这种外部状态可以恢复在不违反封装;也就是说,私人数据是私有的。怎么用备忘录设计模式在Viewcontroller的实现文件里添加下面方法:- (void)saveCurrentState{// When the user leaves the app and then comes back again, he wants it to be in the exact same state// he left it. In order to do this we need to
阅读全文
摘要:版权声明:原创作品,谢绝转载!否则将追究法律责任。键值观察模式:在KVO,一个对象可以要求被通知当他的某个特殊的属性被改变了。自己或者另一个对象。如果你感兴趣你可以阅读更多的信息参考: Apple’s KVO Programming Guide.怎么用KVO设计模式呢?正如上面提及到的。这个KVO机制允许一个对象观察一个属性的改变。在你的例子。你可以用KVO来观察你UIImageView图片属性的改变。打开AlbumView添加下面代码到initWithFrame:albumCover:在 [self addSubview:indicator];后面;[coverImage addObserv
阅读全文
摘要:版权声明:原创作品,谢绝转载!否则将追究法律责任。观察者设计模式在观察者设计模式里面,一个对象通知其他的对象一些状态的改变。涉及这些对象不需要知道另一个对象---因此鼓励解耦设计模式。这个设计模式经常被用来通知感兴趣的对象当一个属性被改变时候。通常实现需要一个观察者注册另一个对象感兴趣的状态。当状态改变,所有的观察者对象被通知改变了。苹果的远程通知服务就是一个全球性的例子。如果你一直坚持MVC的概念,你需要允许你的model对象和View对象通信,但是不能直接引用,这就是观察者设计模式的由来。cocoa实现观察者有两个相似的方法:通知和键值观察:通知:不要被本地通知和远程通知迷惑,通知是根据订
阅读全文
摘要:版权声明:原创作品,谢绝转载!否则将追究法律责任。那么怎么使用适配器设计模式呢?这个之前提到的水平滚动的视图像这样:为了开始实现他,我们创建一个新的继承与UIView的HorizontalScroller 类。打开头文件添加以下代码:@protocol HorizontalScrollerDelegate // methods declaration goes in here@end这里定义了一个叫做HorizontalScrollerDelegate的协议并且他继承与NSObject协议就像Objective-c继承与他的父类一样。符合NSObject协议是一个很好的做法,或者符合一个协议这
阅读全文
摘要:版权声明:原创作品,谢绝转载!否则将追究法律责任。代理:另一个装饰设计模式,代理,是一个代表或者协调另一个对象的行为机制。例如当你用一个tableView,你必须实现他里面的一个tableView:numberOfRowsInSection:.方法。你不希望tableView知道他有多少行在每个section,因此这个计算每个区有几行的任务交给了UITableView的代理。他允许tableView类是独立的数据显示。当你创建一个UITableView的时候下面发生的:这个tableView的对象的工作是用来展示tableView的,然而最终他将需要一些信息他没有的。然后转向他的代理和要求额外
阅读全文
摘要:装饰设计模式 装饰设计模式动态的添加行为和责任向一个对象而不修改他的任何代码。他是你子类化修改类的行为用通过另一个对象的包装的代替方法。 在Objective-c里面有很多这种设计模式的实现,像category和delegation。 类别 类别是一个极其强大的机制允许你向已经知道的类添加方法不用继承。新方法在编译时间被添加可以像正常方法一样被执行在这个扩展类里面。这个和类的修饰定义有稍微的不同。...
阅读全文
摘要:外观设计模式: 这个外观设计模式提供了一个单独的接口给复杂的子系统。而不是暴露用户的一组类和API,你仅仅暴露一个简单的同一的API。 下面的图片解释这个概念: API的用户根本不知道后面系统的复杂性。这种模式是理想的在处理大量的类,特别是当他们复杂的使用或者很难理解的时候。 这个外观设计模式使用系统的接口和你隐藏的实现来分离代码。他也减少了依赖外部代码的子系统运作。这也是有用的如果在外观设计模...
阅读全文
摘要:设计模式的好处:我们可以写出容易理解,重用度很高的代码。降低代码的耦合度,符合软件工程的思想。设计模式主要分为三类:创造型的:单例和抽象工厂。结构类型的:MVC Decorator, Adapter, Facade and Composite.等这几种模式行为性的:Observer, Memento, Chain of Responsibility and Command.讲讲第一个设计模式MVC,我们的iOS应用基本都是基于MVC的。model:持有我们应用的数据,和定义怎么操控他。在你的应用里面就是Album 这个类View:处理用户的操作和展示model,都是UIView的子类。在应用里
阅读全文
摘要:现在我们的组件已经有组织了。你需要从其他的地方得到数据,你也可以创建一个API类管理数据这个下个设计模式单例里面介绍。这个单例设计模式确保这个类仅仅拥有一个实例,并且为这个实例提供一个全局的访问点。当的题词需要的时候他可以用懒加载创建一个单例。注意:apple用了很多的单例:[NSUserDefaults standardUserDefaults],[UIApplication sharedApplication], [UIScreen mainScreen], [NSFileManager defaultManager]他们都是返回一个单例对象。我们很想知道为什么如如果有不止一个类的实例存在
阅读全文
摘要:IOS单例模式是在一个程序中定义一个全局共享的实例变量
阅读全文