IOS开发
文章平均质量分 89
arbboter
也曾梦想上天,还是默默无闻,而今迈步从头越
展开
-
职责链模式(Chain of Responsibility)
职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止。原创 2015-04-16 18:50:23 · 1248 阅读 · 0 评论 -
观察者模式(Observer Pattern)
观察者设计模式也叫做发布-订阅(Publish-Subscribe)模式。有点像杂志订阅的意思,你向杂志社订阅杂志,然后提供了自己的姓名和邮箱地址,这样杂志社就可以把你所订阅的杂志推送到你的邮箱了,而你收到的杂志都是你自己订阅的,不会不是你订阅的,这就是一个观察者模式的例子。订阅杂志的过程简单来说就是一个观察者(订阅者)向某个杂志社(发布者)订阅特定的杂志,其静态关系图如下所示原创 2015-01-23 08:54:45 · 3084 阅读 · 0 评论 -
IOS程序启动引导示例
摘要本章简述了IOS开发过程中程序第一次启动时的程序引导的示例,主要用到了UIScrollView作引导界面,使用NSUserDefaults相关键值判断程序是否第一次启动。主要技术判断是否第一次启动- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictio原创 2015-03-03 23:17:37 · 2921 阅读 · 0 评论 -
IOS多线程开发之GCD
概要 GCD的全称是Grand Central Dispatch(译为中心调度队列?),可以理解为线程管理队列,是苹果公司为多核的并行运算提出的解决方案,能够根据系统环境自适应线程管理,基本属于全自动的线程管理。 在GCD里面,任务需要放到队列里面执行,队列根据自身属性分发任务执行,不过原则总是FIFO。队列分为串行和并行队列,串行队列是队列里面只有一个线程,所以队原创 2015-01-01 14:29:08 · 1887 阅读 · 0 评论 -
IOS多线程开发之NSOperation
概要 示例简述了NSOperation,NSInvocationOperation,NSOperationQueue以及NSBlockOperation的使用,其中NSOperation是抽象基类,而NSInvocationOperation和NSBlockOperation是Foundation实现的两个NSOperation子类,而NSOperationQueue是一个线程池,可以往原创 2014-12-31 21:23:51 · 1625 阅读 · 0 评论 -
IOS开发-数据持久化(二)【sqlite数据库】
概要 本章主要简示了IOS开发中使用sqlite来持久化数据,其使用方法和C++中使用sqlite基本一致。结果展示(其实没啥看的)流程概要1.因为使用的是以前的工程,所以主需要再拖拉两个按钮就差不多了2.因为要使用sqlite,所以需要引用sqlite库(sqlite框架),在工程设置里面的,如下图所示3.在原先的序列化类里面添加保存和原创 2014-12-11 21:20:33 · 1703 阅读 · 0 评论 -
IOS-UIAlertView和UIActionSheet
IOS中两大控件:UIAlertView和UIActionSheetUIAlertView是在屏幕中央弹出一个消息框,该消息框可以用来做消息提示,也可以让用户选择不同选项。UIActionSheet是在屏幕底端弹出一个消息框,功能类似UIAlertView,不过两者除了位置不一样外,其外观也有出入。为了能够响应UIAlertView和UIActionSheet,需要设定其代理,而对原创 2014-11-30 15:12:17 · 1463 阅读 · 0 评论 -
IOS-TabView学习
总结由于看的教程是以前的,而XCode好像改变蛮大的,所以直接按照教程里面修改不可能啊,所以自己在Xcode6.1摸索了一番,总算是写出了一个TabView的例子了。主要困难点是,Xcode在编辑多视图时老感觉编辑界面不够用,隐藏文件视图栏、属性视图栏,真是淡淡的忧伤。而且再新建第三个视图时,不是新建一个xi文件,而是在Main.storyboard里面拖出一个ViewContoller控件,原创 2014-12-02 21:29:20 · 2119 阅读 · 0 评论 -
IOS-UIProgressView和UIActivityIndicatorView
UIProgressView 一个进度条,一般用来量化一个耗时的工作,指示当前工作的进度。UIActivityIndicatorView 一个等待示意控件,用来表示当前的工作还没结束,需要继续等待。示例h文件//// ViewController.h// 1129_HelloWolrd//// Created by God L原创 2014-11-30 17:31:20 · 1223 阅读 · 0 评论 -
IOS-UITabView示例
总结 本章主要简示了UITabView得使用方法,使用UITabViewController的三个页面演示不同情况,包括简单的表格,分段带副标题风格的表格以及索引表格。运行结果工程构建概要1.UITabViewController的使用方法可参考以前的文章2.使用UITabView的控制类必须实现该控件对应的数据源和代理的方法,同时需要在IB里面指定UI原创 2014-12-05 17:04:53 · 3314 阅读 · 0 评论 -
IOS开发-数据持久化(一)【文本文件+二进制归档】
概要 数据持久化分为不同的方式,本章主要简示了数据归档(一般而说的序列化)和写XML的文本文件方式。其中XML文本方式主要使用NSArray或者NSDictionary的writeToFile方法,而数据归档使用了NSKeyedArchiver/NSKeyedUnarchiver等实现数据的归档(序列化)。结果展示程序展示数据化文件 注意原创 2014-12-09 23:24:02 · 2505 阅读 · 0 评论 -
设计模式阶段性总结之对象创建
之前的几篇文章所介绍的设计模式都是关于如何创建对象的,涉及到的设计模式如下所示:原型模式(Prototype) :拷贝复制一个对象工厂方法模式(Factory Method) :创建一个对象抽象工厂模式(Abstract Factory):创建个或多个对象建造者模式(Builder):分步创建一个对象单例模式(Singletond):创建一个唯一的对象在IOS的开发过程中,原原创 2015-01-17 11:07:40 · 2418 阅读 · 0 评论 -
工厂方法(Factory Method)
定义工厂方法也叫虚构造器(virtual constructor),适用于在代码运行时,当不能确定对象所创建的类型而需要其子类确定的时候。在面向对象编程的环境中,其大致情况就相当于利用多态的特性,调用基类接口创建对象,而子类又各自实现了自己的创建接口的方法,类图结构如下:如果撇开工厂方法模式的话,那么当需要创建对象的时候,直接在需要的地方使用具体的产品类创建对象即可,但是这样的话代原创 2015-01-13 14:11:29 · 2680 阅读 · 0 评论 -
装饰器模式(Decorator Pattern)
定义先给出比较正式的定义哈。装饰器一般的理解就是为了实现增强版的对象,而在面向对象的编程中,一般增强一个对象的方法就是:修改对象的类结构继承,构造一个继承于目标对象的类,然后再子类里面再把增强的功能加上显然,上面两种方法都是可以实现增强对象的功能的,但是根据面向对象编程的原则,修改显然是不可取得,至于继承,虽然也可以,但是一般基于增强功能的需求我们一般的做法是尽量使原创 2015-04-15 20:33:48 · 1300 阅读 · 0 评论 -
适配器模式(Adapter)
定义有一天,你要用到一个功能,而恰好你已经有一个实现了该功能的类,但是该类的接口和你所需要使用的接口不谦容,怎么做?把原来的类拿过来修改还是怎么的?修改的话,要改变原有的接口,也许修改起来比较难,也许你已经忘了该类是怎么实现的,也许以后的某一天你又要在其他程序里面使用该类,而那个时候要使用的接口又是另外的一种方式。所以,直接修改的话,未免太傻太天真,而且难免会修改得千真万确。在编程经验原创 2015-01-17 16:38:17 · 2445 阅读 · 0 评论 -
桥接模式(Bridge pattern)
定义桥接模式的目的是使得程序的抽象部分和实现部分相分离,使得相互间独立而不再相互依赖,使得抽象部分和实现部分的修改不至于引起对方的修改。抽象部分抽象出供客户端直接使用的接口,而实现部分定义了抽象部分需要使用的接口,当抽象部分的实例引用了实现部分的接口的时候,我们所谓的桥接也就形成了。桥接是通过实现部分的引用,把抽象接口和实现部分的接口桥接起来,这就是桥接的来源。其原理图如下所示:原创 2015-01-18 21:35:55 · 2785 阅读 · 0 评论 -
组合模式(Composite Pattern)
定义组合模式将具有相同的基本类型的对象组合成树形结构的对象,该树的父节点和子节点具有相同的类型,相同的接口。换句话说,将对象组合成树形结构以表示“部分-整体”的层次结构,Composite使得用户对单个对象和组合对象的使用具有一致性。由于父节点和子节点具有相同的基本类型,所以在整个树上不需要做任何类型检查,客户端就可以在父节点和子节点上进行相同的操作,而不需要区分它所需要操作的对象是父节点还是子节点。使用组合对象的客户端可以忽略树的父节点和字节点得差异,使得用起来非常顺手、简单,下面是一个运行时的组合对原创 2015-01-23 19:11:26 · 3026 阅读 · 0 评论 -
中介者模式(Mediator Pattern)
定义一个中介对象来封装系列对象之间的交互。中介者使各个对象不需要显示地相互引用,从而使其耦合性松散,而且可以独立地改变他们之间的交互。原创 2015-01-20 21:41:48 · 2929 阅读 · 0 评论 -
原型模式(Prototype)
定义原型模式有点像复制,不过该复制可以做一些修改,即从原对象复制出一个一模一样的对象后,然后可以选择性地修改复制后的对象,以此创建出一个需要的新对象。这里需要注意的是此处的复制指深拷贝,比较权威的定义如下所示THE PROTOTYPE PATTERN: Specify the kinds of objects to create using a prototypical insta原创 2015-01-12 15:15:05 · 2585 阅读 · 0 评论 -
抽象工厂(Abstract Factory)
定义在软件设计中,如果客户想手动创建一个对象,需要知道对象的详细结构,包括其数据结构以及方法调用,如果运气不好,还可能因为该对象引用了其他对象,导致客户端还得了解其他对象,如此..使得该对象的创建变得复杂起来。之前讲过的工厂方法模式可以解决该类问题,不过工厂方法模式一般用来解决单个对象的创建,对于需要创建多个有关联的对象,那么可能就需要使用抽象工厂模式的方法了。此时,客户端只需要知道抽象出来的原创 2015-01-14 10:25:10 · 2316 阅读 · 0 评论 -
外观模式(Facade Patter)
定义外管设计模式是为了给子系统的一系列不同的接口提供统一的接口的方案。外观模式通过定义更高层次的接口使得子系统更容易使用,隐藏了子系统的交互细节和相互间的依赖。简而言之,通过外观设计模式,使得原本难用复杂的一个系统变得简单易用,而这种方式就是外观模式定义了更高一层的统一接口,隐藏了原来系统调用接口以及相互间的依赖性。拿LInux的PC开机做例子,我们要说的开机不是简单的按电源键开机。其实Linux开机的具体流程大致是这样的:原创 2015-01-19 20:20:27 · 2538 阅读 · 0 评论 -
迭代器模式(Iterator Pattern)
说到迭代器,我们应该是很熟悉的,不管你是写过C++代码还是写过IOS代码,你都应该有用过迭代器,比如C++的vector、list等STL对象都提供了迭代器以供程序代码可以更为方便地遍历集合元素。迭代器为访问集合对象提供一种间接的方法,从而使得外部不需要知道集合的内部细节。集合对象的迭代器避免了集合对象本身实现的元素的遍历,使得集合的遍历更为简单、便利。迭代器一般定义了通用的访问集合元素的方法,同时提供了记录了当前元素的机制,使得可直接使用迭代器而不需要使用集合对象本身就可以访问集合。集合和迭代器的基本关原创 2015-01-26 19:51:24 · 3796 阅读 · 0 评论 -
访问者模式(Visitor Pattern)
什么是访问者呢?就拿身边的一个例子来看看吧。你有一栋房子,房子里面有很多管道、电路之类的东西,很显然,这些东西你不懂,是别人帮你弄好的。有一天,你家的管道出问题了,于是你需要解决这个问题,但是你不懂,所以你需要找专业人员(管道修理工)来维护,这个你找的人对于你的房子来说他就是访问者了。访问者设计模式主要包含两个角色:访问者和被访问的对象。访问者模式将有关的行为集中到一个访问者对象中,而不是分散到一个个的节点类中,使得增加新的操作变得很容易。如果你熟悉MVC模型,那么可以发现,在MVC中,M是被访问者,C是访原创 2015-01-27 21:42:48 · 3997 阅读 · 0 评论 -
建造者模式(Builder)
定义(本人在阅读完本书的中英两个版本之后发现对建造者模式十窍懂了九窍,所以直接去网上搜别人的分析了,所以本章大部分是根据网上的资料收集来的,此外,代码例子表示本书的例子不合适,也换了,所以本章和这本书关系不大。)建造者模式是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式最重要的两个角色:抽象建造者(Builder)和指导者(Director),其中建原创 2015-01-14 17:42:22 · 2810 阅读 · 0 评论 -
IOS开发-UIDatePicker和UIPickerView(拾取器)
外观及作用 UIDatePicker和事件相关,用来设置时间,选择时间等。UIPickerView则是自定义的,可以用作下拉列表等运行结果本示例主要简示了这些拾取器的用法,效果图如下所示(改成Iphone4大小了): 构建概要1.新建基本视图或者基于TabView的工程,如果是原创 2014-12-04 11:14:13 · 1600 阅读 · 0 评论 -
IOS-应用程序设置
摘要 在使用软件中我们有时可以看到有些软件是可以在系统中配置该软件对应参数的,如何生成和使用这个功能就是今天的主角拉。其主要方法是在工程里面新建一个Settings Bundle类型的资源文件,然后修改增加一些Item即可实现这个功能。对于设置而言,不需要写代码,而如果程序里面需要读取这些配置信息,则可通过每个Item的Key读取,主要使用NSUserDefaults类实现原创 2014-12-08 23:10:26 · 1304 阅读 · 0 评论 -
密码生成器
概要通过仿密码生成器软件,练习IOS开发技术,加深对MVC设计模式的理解,对以前学习的点点滴滴复习+掌握。因为看到的例子是用拖拉界面实现的,而为了实现和更好地学习IOS开发,我采用纯编码的方式来开发,所以相对拖拉会比较慢。例子里面虽然有专门的布局方法,但是没有处理屏幕方向发生变化时的事件,所以横屏还是有问题的。此外,对于每个界面都有一个对应的控制类,在UIView类里面实现UI元素的添加布局,原创 2014-12-23 17:12:18 · 2184 阅读 · 0 评论 -
UILabel,UITextField和UIButton使用简示
关于题中三个控件的简要使用例子。代码- (void)viewDidLoad{ [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. // 设置视图背景色 [self.view setBackgroundColor:[UICo原创 2014-12-03 12:48:18 · 1588 阅读 · 0 评论 -
触摸手势以及图形变换(UIGestureRecognizer, CGAffineTransform)
概要 本章主要学习了IOS开发中的触摸手势以及图形变换的知识,其中手势包括单击、双击、长按、拖动、滑动、缩放、旋转,图形变化主要使用放射矩阵的平移、缩放和旋转。 使用手势时应该注意手势是指定到特定的视图(UIView)上的,因此一个手势只能对应一个视图(手势里面的view属性可获取其所所对应的视图),而一个View可以添加多个手势。同时,因为有的手势之间有冲突的,比如单击和双击,滑原创 2014-12-19 16:45:02 · 2559 阅读 · 0 评论 -
代理传值-不同类之间参数传递
概要很多时候,不同的类之间需要有数值交流传递,但是这些类之间并没有直接的关系,比如当一个界面向子页面传递某个参数,而子页面修改某些值之后而再返回主页面的时候,主页面的UI需要根据子页面的状态做一定的UI更新,这时,就需要考虑参数传递的问题了。这里使用IOS的代理的特点,以担当参数传递的职责。主要技术点本例子的实验效果如下所示其中主页面输入的用户ID是通过代理原创 2015-01-09 14:43:36 · 2053 阅读 · 0 评论 -
IOS备忘录
关于以下三种类别的声明:原创 2014-12-27 19:35:03 · 1759 阅读 · 0 评论 -
Quartz绘图使用示例
概要 本章主要简示了使用IOS的绘图Quartz,包括简单的画直线、图片、文字、圆、矩形、贝塞尔曲线,包括一些基本使用方法。结果展示流程概要1.绘图好像直接在UIView类里面绘制的,在控制类里面绘制没有尝试。2.新建一个基于UIView的类,发现新建类里面自动生成了drawRect方法,直接在这个方法里面写代码即可自动被调用3.注意绘图原创 2014-12-18 20:44:08 · 1624 阅读 · 0 评论 -
点对点聊天吧
概要瞎逛发现某广告的链接,点进去,发现某通讯SDK,瞅了下,好像不是太复杂,想想也算学了些IOS开发,好像没啥事做,拿来学学学习。该SDK支持Cocoapod第三方库,所以安装比较简单的,不过注意只能使用两个库中的一个,因为IMKit包含了IMLib,其中IMLib是通讯库,没有实现界面组件,而IMKit在IMLib的基础上实现了界面,集成简单。本例子力求简单点吧,做了一个好友聊天功能原创 2015-01-07 22:38:41 · 2483 阅读 · 0 评论 -
UINavigationController和UITabBarController混用
很多时候,在UI设计方面同时需要使用导航控制器和标签栏控制器,这时,需要掌握如何设计结合使用这两种不同控制器。比如手机QQ,程序有三个标签栏(分别为消息、联系人、动态),同时在选择某个联系人或者会话时,会进入聊天的子页面,因此这里同时使用到了标签栏控制器和导航控制器。我目前所知道有以下方法可实现上述的结合使用效果。根视图是标签栏控制器,然后每页标签栏又有一个根视图控制器为导航栏控制原创 2015-01-08 11:03:42 · 2124 阅读 · 0 评论 -
实例变量和属性
概要 在开发IOS中,发现自己对属性和实例变量存在一定的困惑,所以今天花了时间查资料以及做实验,顺便记录一下自己的体会。 属性和实例变量都是类的对象实例所有,属性是方法,可使用点(.)调用也可以按照OC的正常方法调用,对于一般的属性赋值其实就是调用属性的设置方法;实例变量如果可以访问,需要使用指针访问形式(当然因为访问的实例是一个指针)。正常情况下,属性和实例变量没原创 2014-12-17 11:46:30 · 2016 阅读 · 0 评论 -
IOS获取设备信息
概要IOS获取设备信息一般是通过UIDevice,UIScreen,NSBundle,NSLocal等方式,如果说要获取设备的内存、处理器信息,似乎可以依照Unix获取类似信息方式。UIDevice提供了多种属性、类函数及状态通知,包括检测电池电量和定位设备与临近感应,UIDevice所做的工作就是为应用程序提供用户及设备的一些信息。UIDevice类还能够收集关于设备的各种具原创 2015-01-06 15:29:06 · 1985 阅读 · 0 评论 -
触摸事件和手势(UITouch)
概要 本章主要简示了IOS里面的触摸手势部分,触摸分为:开始触摸、移动、结束、取消,四个部分,本章主要根据这四个方法的信息监测触摸手势,按自己理解的,不知道正确的是怎么识别的,以后可以去对比对比,看和这里的方法有什么不同的地方。结果展示流程概要1.因为触摸事件是逐渐向上层传递的,所以可以直接在UIView里面处理,也可以在UIViewContro原创 2014-12-17 00:21:46 · 2318 阅读 · 0 评论 -
视频播放器(MPMoviePlayerViewController,NSNotificationCenter)
概要本章主要简示了利用IOS的MPMoviePlayerViewController开发的视频播放器,主要利用了MPMoviePlayerViewController和NSNotificationCenter,当然也用到了以前的UITableView知识。结果展示原创 2014-12-15 00:37:30 · 1523 阅读 · 0 评论 -
显示动画,隐式动画、关键帧动画
概要 一些简单的动画代理学习例子,包括显示、隐式、关键帧、关键帧路径四类动画。结果展示流程概要 见代码主要代码//// ViewController.m// Animation//// Created by arbboter on 14/12/20.// Copyright (c) 2014年 arbboter. A原创 2014-12-20 14:12:40 · 2235 阅读 · 0 评论 -
NSTimer,UIActivityIndicatorView,UIProgressView等控件的使用方法
说明 本例子主要简示了和时间相关的一些控件的用法,模拟了一个下载器。运行结果主要代码@synthesize _labelInfo;@synthesize _textInfo;@synthesize _buttonDownload;@synthesize _processViewDownload;@synthesize _activityIndicatorDow原创 2014-12-03 17:37:43 · 1604 阅读 · 0 评论