
Objective-C
arbboter
也曾梦想上天,还是默默无闻,而今迈步从头越
展开
-
观察者模式(Observer Pattern)
观察者设计模式也叫做发布-订阅(Publish-Subscribe)模式。有点像杂志订阅的意思,你向杂志社订阅杂志,然后提供了自己的姓名和邮箱地址,这样杂志社就可以把你所订阅的杂志推送到你的邮箱了,而你收到的杂志都是你自己订阅的,不会不是你订阅的,这就是一个观察者模式的例子。订阅杂志的过程简单来说就是一个观察者(订阅者)向某个杂志社(发布者)订阅特定的杂志,其静态关系图如下所示原创 2015-01-23 08:54:45 · 3120 阅读 · 0 评论 -
访问者模式(Visitor Pattern)
什么是访问者呢?就拿身边的一个例子来看看吧。你有一栋房子,房子里面有很多管道、电路之类的东西,很显然,这些东西你不懂,是别人帮你弄好的。有一天,你家的管道出问题了,于是你需要解决这个问题,但是你不懂,所以你需要找专业人员(管道修理工)来维护,这个你找的人对于你的房子来说他就是访问者了。访问者设计模式主要包含两个角色:访问者和被访问的对象。访问者模式将有关的行为集中到一个访问者对象中,而不是分散到一个个的节点类中,使得增加新的操作变得很容易。如果你熟悉MVC模型,那么可以发现,在MVC中,M是被访问者,C是访原创 2015-01-27 21:42:48 · 4030 阅读 · 0 评论 -
迭代器模式(Iterator Pattern)
说到迭代器,我们应该是很熟悉的,不管你是写过C++代码还是写过IOS代码,你都应该有用过迭代器,比如C++的vector、list等STL对象都提供了迭代器以供程序代码可以更为方便地遍历集合元素。迭代器为访问集合对象提供一种间接的方法,从而使得外部不需要知道集合的内部细节。集合对象的迭代器避免了集合对象本身实现的元素的遍历,使得集合的遍历更为简单、便利。迭代器一般定义了通用的访问集合元素的方法,同时提供了记录了当前元素的机制,使得可直接使用迭代器而不需要使用集合对象本身就可以访问集合。集合和迭代器的基本关原创 2015-01-26 19:51:24 · 3827 阅读 · 0 评论 -
组合模式(Composite Pattern)
定义组合模式将具有相同的基本类型的对象组合成树形结构的对象,该树的父节点和子节点具有相同的类型,相同的接口。换句话说,将对象组合成树形结构以表示“部分-整体”的层次结构,Composite使得用户对单个对象和组合对象的使用具有一致性。由于父节点和子节点具有相同的基本类型,所以在整个树上不需要做任何类型检查,客户端就可以在父节点和子节点上进行相同的操作,而不需要区分它所需要操作的对象是父节点还是子节点。使用组合对象的客户端可以忽略树的父节点和字节点得差异,使得用起来非常顺手、简单,下面是一个运行时的组合对原创 2015-01-23 19:11:26 · 3047 阅读 · 0 评论 -
单例模式(Singletond)
定义单例模式是为了使得整个程序的单例类只有一个对象,整个程序共同使用一个该类型的对象。单例模式确保某一个类只有一个实例,这个类称为单例类。其定义如下:单例模式其实很容易理解的,我只要一个对象,至始至终都是这一个对象。对于C++实现单例模式是比较简单的,把构造函数(包括拷贝构造函数)、析构函数的访问权限设置为private,然后提供获取单例对象的接口即可(一般不提供销毁对象的接口,防止不原创 2015-01-16 11:24:27 · 2870 阅读 · 0 评论 -
桥接模式(Bridge pattern)
定义桥接模式的目的是使得程序的抽象部分和实现部分相分离,使得相互间独立而不再相互依赖,使得抽象部分和实现部分的修改不至于引起对方的修改。抽象部分抽象出供客户端直接使用的接口,而实现部分定义了抽象部分需要使用的接口,当抽象部分的实例引用了实现部分的接口的时候,我们所谓的桥接也就形成了。桥接是通过实现部分的引用,把抽象接口和实现部分的接口桥接起来,这就是桥接的来源。其原理图如下所示:原创 2015-01-18 21:35:55 · 2867 阅读 · 0 评论 -
外观模式(Facade Patter)
定义外管设计模式是为了给子系统的一系列不同的接口提供统一的接口的方案。外观模式通过定义更高层次的接口使得子系统更容易使用,隐藏了子系统的交互细节和相互间的依赖。简而言之,通过外观设计模式,使得原本难用复杂的一个系统变得简单易用,而这种方式就是外观模式定义了更高一层的统一接口,隐藏了原来系统调用接口以及相互间的依赖性。拿LInux的PC开机做例子,我们要说的开机不是简单的按电源键开机。其实Linux开机的具体流程大致是这样的:原创 2015-01-19 20:20:27 · 2561 阅读 · 0 评论 -
适配器模式(Adapter)
定义有一天,你要用到一个功能,而恰好你已经有一个实现了该功能的类,但是该类的接口和你所需要使用的接口不谦容,怎么做?把原来的类拿过来修改还是怎么的?修改的话,要改变原有的接口,也许修改起来比较难,也许你已经忘了该类是怎么实现的,也许以后的某一天你又要在其他程序里面使用该类,而那个时候要使用的接口又是另外的一种方式。所以,直接修改的话,未免太傻太天真,而且难免会修改得千真万确。在编程经验原创 2015-01-17 16:38:17 · 2464 阅读 · 0 评论 -
设计模式阶段性总结之对象创建
之前的几篇文章所介绍的设计模式都是关于如何创建对象的,涉及到的设计模式如下所示:原型模式(Prototype) :拷贝复制一个对象工厂方法模式(Factory Method) :创建一个对象抽象工厂模式(Abstract Factory):创建个或多个对象建造者模式(Builder):分步创建一个对象单例模式(Singletond):创建一个唯一的对象在IOS的开发过程中,原原创 2015-01-17 11:07:40 · 2436 阅读 · 0 评论 -
装饰器模式(Decorator Pattern)
定义先给出比较正式的定义哈。装饰器一般的理解就是为了实现增强版的对象,而在面向对象的编程中,一般增强一个对象的方法就是:修改对象的类结构继承,构造一个继承于目标对象的类,然后再子类里面再把增强的功能加上显然,上面两种方法都是可以实现增强对象的功能的,但是根据面向对象编程的原则,修改显然是不可取得,至于继承,虽然也可以,但是一般基于增强功能的需求我们一般的做法是尽量使原创 2015-04-15 20:33:48 · 1326 阅读 · 0 评论 -
中介者模式(Mediator Pattern)
定义一个中介对象来封装系列对象之间的交互。中介者使各个对象不需要显示地相互引用,从而使其耦合性松散,而且可以独立地改变他们之间的交互。原创 2015-01-20 21:41:48 · 2961 阅读 · 0 评论 -
IOS-UIAlertView和UIActionSheet
IOS中两大控件:UIAlertView和UIActionSheetUIAlertView是在屏幕中央弹出一个消息框,该消息框可以用来做消息提示,也可以让用户选择不同选项。UIActionSheet是在屏幕底端弹出一个消息框,功能类似UIAlertView,不过两者除了位置不一样外,其外观也有出入。为了能够响应UIAlertView和UIActionSheet,需要设定其代理,而对原创 2014-11-30 15:12:17 · 1477 阅读 · 0 评论 -
Mac版本的MessageBox
习惯了Windows的MessageBox后,在Mac里总找不到类似的,所以封装了一个类似的原创 2014-10-30 16:25:01 · 2991 阅读 · 0 评论 -
内存管理
MemoryDemo.h//// MemoryDemo.h// MemoryTest//// Created by arbboter on 14/11/28.// Copyright (c) 2014ๅนด arbboter. All rights reserved.//#import @interface MemoryDemo : NSObject{ N原创 2014-11-28 15:43:48 · 1045 阅读 · 1 评论 -
NSNumber一些示例代码
//// main.m// TestCocoaClass//// Created by God Lin on 14/11/28.// Copyright (c) 2014年 arbboter. All rights reserved.//#import int main(int argc, const char * argv[]){ NSNumber* num原创 2014-11-28 20:11:18 · 1230 阅读 · 0 评论 -
IOS-常见控件用法例子(一)
这部分主要展示了这些控件的用法:UISwitch, UISlider, UIStepper, UIToolbar, UISegmentedControl因为偷懒,全部的控件共用一个事件处理函数。h文件//// ViewController.h// UICtrl//// Created by God Lin on 14/11/30.// Copyright (c)原创 2014-11-30 23:17:41 · 1310 阅读 · 0 评论 -
实例变量和属性
概要 在开发IOS中,发现自己对属性和实例变量存在一定的困惑,所以今天花了时间查资料以及做实验,顺便记录一下自己的体会。 属性和实例变量都是类的对象实例所有,属性是方法,可使用点(.)调用也可以按照OC的正常方法调用,对于一般的属性赋值其实就是调用属性的设置方法;实例变量如果可以访问,需要使用指针访问形式(当然因为访问的实例是一个指针)。正常情况下,属性和实例变量没原创 2014-12-17 11:46:30 · 2037 阅读 · 0 评论 -
IOS备忘录
关于以下三种类别的声明:原创 2014-12-27 19:35:03 · 1779 阅读 · 0 评论 -
分类、扩展和协议
1.分类分类的概念分类是objective-c特有的一种属性,其他编程语言没有类似的模块。分类是为了给现有的类基础上增加某些方法,而不通过继承的方式,这种方法只能给类增加方法,不能增加成员变量,而且不会对原有的类产生影响。分类是类的补充和扩展,本质上是类的一部分,把一个类分成若干部分,每个部分就是分类。分类的语法和类的定义基本一样,只是在类名后面加一对括号及名字* 文件原创 2014-11-26 22:37:37 · 1473 阅读 · 0 评论 -
深入学习Objective-C的NSObject
先来看看NSObject的主要定义如下所示(包括一些我的理解注释):@interface NSObject { Class isa OBJC_ISA_AVAILABILITY;}/* Initializing a Class *//** * @author Arbboter, 15-01-15 22:01:47 * * 如果当前类或者分类实现了load方法才会调原创 2015-01-15 23:18:20 · 2671 阅读 · 0 评论 -
Objective-C 对象模式深入分析
The Objective-C object model翻译 2015-01-15 15:16:56 · 5107 阅读 · 0 评论 -
IOS-UIWebView开发简易浏览器
UIWebView是一个内置的浏览器控件,可直接解析网页,支持HTML5,一般可以用来展示APP的帮助网页,使用很简单,主要包括:1.实现UIWebViewDelegate2.在类里面设置与控件连接的变量3.在类的viewDidLoad里面初始化该控件的代理为self4.在delloc李解除代理设置示例:h文件//// ViewController.h//原创 2014-12-01 21:43:10 · 1497 阅读 · 0 评论 -
职责链模式(Chain of Responsibility)
职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止。原创 2015-04-16 18:50:23 · 1267 阅读 · 0 评论