IOS基础学习日志(一)
今天我们开始学习IOS操作技术,IOS操作系统是用Objective-C来编写的,而Objective-C语言又是建立在C语言基础之上的,究极根本不管学习IOS、还是Objective-C,都应该首先将C语言学好。接下来,我即将向大家介绍我们今天学习的一些IOS操作系统的基础知识,如下:
1、 interface builder简介:
InterfaceBuilder(IB)是Mac OS X平台下用于设计和测试用户界面(GUI)的应用程序(非开源)。为了生成GUI,IB并不是必需的,实际上Mac OS X下所有的用户界面元素都可以使用代码直接生成;但IB能够使开发者简单快捷的开发出符合Mac OS X human-interface guidelines的GUI。通常你只需要通过简单的拖拽(drag-n-drop)操作来构建GUI就可以了。IB使用Nib文件储存GUI资源,同时适用于Cocoa和Carbon程序。在需要的时候,Nib文件可以被快速地载入内存。[1]
InterfaceBuilder工具是在iPhone SDK中提供的。该工具通常用于Mac OS X开发和iPhone应用程序开发。Interface Builder提供了拖放面板以供iOS开发人员将控件拖放到屏幕上。
1、设计模式简介:
设计模式概念:
为常见问题提供一组通用、可复用、经过测试的解决方案。设计模式,使代码编程工程化,是软件工程的基石。
有四个基本要素:1、设计模式;2、问题;3、解决方案;4、效果。设计模式是对被用来在特定的场景下解决一般设计问题的类和相互通信的对象的描述。
描述一个设计模式的主要从以下的几面来进行:模式名和分类;意图;别名;动机;适用性;结构;参与者;协作;效果;实现;代码示例;已知应用;相关模式。
设计模式的分类主要有两种,其一是根据目的准测分类,即模式是用来完成什么工作的;其二是范围准则,指定模式主要是用于类还是用于对象。
2、如何选择设计模式?
1.考虑设计模式是怎么样解决设计问题的。注意各个模式对于找到合适的对象、决定对象的粒度、指定对象的接口的影响。
2.浏览模式的意图部分。通读每个模式的意图,找到和问题相关的一个或多个模式。
3.研究模式怎么样相互关联。
3、什么是沙盒?
IOS SDK的沙盒规则是,所有程序自己的数据和文件都存放在一个独享的,自己的随机生成的目录路径下(生成一次,以后一直用),程序不能访问沙盒和除了系统允许的(例如照片)目录以外的其他任何目录。
4、理解xib(nib)、File’s Owner、First Responder、outlet、action等概念
xib(nib):都是一些对象的描述,类似与VC的.rc资源文件。nib是二进制格式,xib是单一的xml文档,便于源代码版本管理。现在新版本的Xcode 在创建项目时,已经默认使xib格式的文档了。在build的时候,xcode会把xib都转换为nib(反序列化效率高)。app启动的时候会根据xml构造xib对应的界面及其控件。
File’s Owner:xib对应的类,比如UIView的File’s Owner就是视图控制器UIViewController。
First Responder:View和ViewController之间的对应关系,需要一个桥梁来进行连接的(即,对于一个视图,他如何知道自己的界面的操作应该由谁来响应),这个桥梁就是File's Owner。当前响应用户触摸的对象。在应用程序生命周期内, First Responder 在用户与屏幕交互时变化。例如,假设有一个表单。当用户触摸表单中的某个文本域时,那个文本域将成为活动文本域,并担当 First Responder 的角色。
outlet:可以理解为一个指针指向了nib中的控件对象,我们可以通过输出口来操作这个控件。
action:触发一个控件后这个控件执行的方法。
5、View的相关定义及初始化:
自定义View要做的事情
1.初始化:
-对于在程序中创建的View,重写initWithFrame初始化。
-对于在nib中载入的View,重写initWithCoder初始化。
-在nib文件载入完成后,可以使用awakeFromNib处理其他初始化操作。awakeFromNib在initWithCoder之后执行。
注意:要使用[super initXXX]来调用父类的初始化函数。
2.重写dealloc析构。注意要使用[super dealloc].
3.重写drawRect实现绘制。
4.设置autoresizingMask来设置View大小改变时的自动操作。
5.对于subView
-在初始化函数里创建。
-设置autoresizingMask。
-重写layoutSubviews实现布局。
6.使用addGestureRecognizer来添加手势识别对象,重写
- touchesBegan
- touchesMoved
- touchedEnded
- touchedCancelled
来处理手势事件。
使用MultipleTouchEnable来打开多重手势。
使用UserInteactiveEnable来打开手势识别。
使用BeginIgnoringInteractionEvent和EndIgnoringInteractiveEvent来忽略当前事件。
使用hitTest和pointInside来检测手势是否发生在当前View中。
7. 使用DrawRect实现打印。
6、MVC的相关定义:
什么是MVC?
越来越多的开发者们专注于ios的开发,他们开发的相当一大部分应用软件都给人以美的享受,究竟是什么使得ios上的应用可以如此漂亮?因为他们使用了将代码和界面分开的开发结构框架MVC。
MVC即是Model-VIew-Controller三个英文单词的缩写,中文翻译为模型-视图-控制器。MVC并非只有ios应用软件独有的应用开发模式,它被广泛应用在许多软件(尤其是中大型软件)的开发上。MVC把软件系统分为三个部分:Model,View,Controller。Model相当于应用的底层,应用在功能上的实现完全依赖于Model,打个比方,如果是一台电脑的话,Model就是你机箱里的所有东西:cpu,内存,硬盘,显卡等的一个集合,你不必看到它们,但它们必不可少;Controller就是控制器,它控制Model与View的交互,它将M和V捆绑在一起,将你的操作传达给Model,再控制View将其表现出来。View相当于电脑的图形界面,将Model的运行结果可视化地呈现给用户,你在屏幕上看到的一切都可以归类于View。
在cocoa中,你的程序中的每一个object(对象)都将明显地仅属于这三部分中的一个,而完全不属于另外两个。因此,用MVC开发的应用软件更易于进行维护和修改,不用因为底层的Model出了问题而去影响表层的View。MVC虽然把三部分独立了出来,但三部分之间仍然存在联系,但就如下图所示,Model与View之间是完全独立的,两者各自运行,以Controller为桥梁进行交互,并不发生直接关联。