黑马程序员——ObjC基础—Cocoa基础框架

来源:互联网 发布:买家怎么申请淘宝客 编辑:程序博客网 时间:2024/05/16 14:54
-----------Java培训、Android培训、IOS培训、.Net培训、期待与您交流!------------ 

框架在OC中表示一系列的函数、代码、类等组成的一个单独的模块,或者说一个单独的文件(.framework文件),可以重复利用。遗憾的是,正常情况的xcode不允许我们创建自己的框架,当然通过第三方模板或者经过复杂的环境设置,还是可以自己创建的,这属于比较高级的应用,在这里不做阐述。
所幸的是,苹果为我们提供了丰富和完善的框架体系,我们合理使用这些框架就能完成绝大部分的工作,本节简要了解一下这些框架和使用场合。

1、Cocoa框架
Cocoa框架是苹果创建的专门用于MacOS和IOS的原生API,由NeXtSTEP演变而来,严格遵守MVC模型,他是一个庞大的框架集合,我们本节所要了解的各种框架,都是Cocoa框架的一个个部分,Cocoa框架可以自适应MAC OS和IOS两大平台,其中IOS的Cocoa层级如下图:



2、Foundation框架
在前面的学习中,我们主要用到的就是Foundation框架,Foundation框架规范了基本的OC结构类型、表达式、消息传递等机制,设置了NSObject基类及服务,并在此基础上,创建了大量基础的对象类。
a、常用结构体的定义(远不止这些):

<span style="font-size:14px;">// 字符串定位信息typedef struct _NSRange {    NSUInteger location;    NSUInteger length;} NSRange;// 二维坐标struct CGPoint {  CGFloat x;  CGFloat y;};typedef struct CGPoint CGPoint;// 二维尺寸struct CGSize {  CGFloat width;  CGFloat height;};typedef struct CGSize CGSize;// 形状尺寸和大小struct CGRect {  CGPoint origin;  CGSize size;};typedef struct CGRect CGRect;</span><span style="font-size:12px;"></span>

使用方式如下:

    NSRange r1 = {12, 13}; // 字符串定位 {正数个数,长度}  CGRange    NSPoint p1 = {1, 2}; // 坐标 {x,y}  CGPoint    NSSize s1 = {12, 13}; // 尺寸 {长,宽}  CGSize    NSRect c1 = {0,0,3,3}; // 形状坐标和尺寸 {x,y,长,宽}  CGRect        // 采用封装方式,可以指示用法    NSRange r2 = NSMakeRange(12, 13); // CGRangeMake    NSPoint p2 = NSMakePoint(1, 2); // CGPointMake    NSSize s2 = NSMakeSize(12, 13); // CGSizeMake    NSRect c2 = NSMakeRect(0, 0, 3, 3); // CGRectMake        // 转换字符串方法    NSString *str1 = NSStringFromRange(r1);    NSString *str2 = NSStringFromPoint(p1);    NSString *str3 = NSStringFromSize(s1);    NSString *str4 = NSStringFromRect(c1);

b、对象模型
Foundation框架里的基本对象类大都以NSObject类为基类,该框架下的对象类主要分为以下几大类:
——值对象:NSValue,NSNumber,NSData,NSNull等
——集合:NSArray,NSSet,NSDictionary等
——字符串:NSString,NSFormatter,NSCharacterSet等
——XML:用来访问XML文件
——查询:NSExpression,NSPredicate等
——系统服务:包括文件服务、线程服务、网络服务、端口服务等
——归档和序列化:NSCoder,NSPropertyListSerialization等
——通知中心:NSNotification,NSNotificationCenter等
——OC语言服务:NSAutoreleasePool、NSInvocation等服务
——Scripting脚本服务:NSAppleScript等脚本服务
此外还有一个与NSObject并列的NSProxy类,他的作用主要是实现Cocoa最重要的MVC模式,将在后面学习,NSProxy类的子类有NSDistantObject,NSprotocolChecker两个,他们配合NSObject基类下的NSConnection,NSDistantObjectRequest来完成工作。
关于这些类的使用方法,需要在用的时候系统的讨论。

3、UIKit框架
UIKit是IOS中用于构建用户界面及用户交互的基本框架,可以说,一个IOS应用程序离不开UIKit框架,该框架包含了UIView、UIButton、UITextfield、UIResponder等基本的用户交互类,以及UIColor、UIImage、UINib等相关类,我们可以直接调用UIkit中为我们提供的丰富交互类库,同时可以在此基础上定制自己的UI对象,实现丰富的用户界面。UIKit框架结构如下:



4、Core Data框架
该框架采用SQLlite技术创建和管理对象,优化内存存储,同时支持基于文档的应用程序,包括NSAtomic、NSFetchRequest、NSManagedObject、NSSaveChangesRequest等类。我们如果要实现undo/redo、优化存储、管理表视图结果以及创建基于文档的应用程序时,需要用到Core Data中的功能。

5、Core Graphics框架
该框架为底层绘图函数库,可以实现UIKit无法实现的复杂图形的绘制(如曲线的绘制),我们可以用他来创建基于路径的绘图,进行图形的抗锯齿渲染以及图片、PDF、梯度、颜色等信息的底层处理,

6、Quartz Core框架
我们采用UIKit框架创建一个窗体,一个按钮,或者播放一个视频, 其实归根结底,还是要用到Quarzt Core框架,这个框架为我们提供屏幕显示最基本的层、帧、运动和变形等实现,如果我们要实现一些UIKit没给我们提供的功能或者特效,就要用到Quarzt Core框架里的类或者功能。

7、OpenGL ES框架
该框架支持2D和3D绘图及渲染,是一个完整的游戏引擎,他直接访问底层设备,提供高速、复杂的视觉体验,能够创建2D和3D图形,实现复杂的图形分析和变化,一般用来制作视觉冲击较大的大型游戏及娱乐项目,也可以用来分析和研究图形。

以上为我们设计学习经常用到的几个框架,当然实际上还有很多没有涉及到的框架,在实际工程中如果要使用这些框架,可以在项目的Bulid Phases里的Libraries里添加对应框架,并在使用之前,像Foundation框架一样通过#import指令添加即可。


-----------Java培训、Android培训、IOS培训、.Net培训、期待与您交流!------------ 
0 0
原创粉丝点击