iOS开发技术

iOS系统架构及常用框架

2017-07-25  本文已影响403人  sweetpf

iOS的系统架构分为四个层次,由内而外依次是:

1. Core OS layer

2. Core Services layer

3. Media layer

4. Cocoa Touch layer

5、常用的IOS系统框架

6. 常用的iOS 开源框架

网络框架

网络聊天

网络测试

UI组件库

布局

7 系统框架重点解析

UIKit

UIKit框架是可视类对象的基础文件,继承于NSObject。提供一系列的Class(类)来建立和管理iPhone OS应用程序的用户界面接口、应用程序对象、事件控制、绘图模型、窗口、视图和用于控制触摸屏等的接口。

当引入此头文件后,便可以在程序里使用任何在UIKit里声明的类

CoreGraphics

它是iOS的核心图形库,平时使用最频繁的point,size,rect等这些图形,都定义在这个框架中,类名以CG开头的都属于CoreGraphics框架,它提供的都是C语言的函数接口,是可以在ios和mac os通用的。

QuartzCore

QuartzCore,Quartz是位于Mac OS X的Darwin核心之上的绘图层。是iOS系统的基本渲染框架,是一个OC语言框架。简单通俗的近似理解为:是一套基于CoreGraphics的OC语言封装。
主要部分有CoreAnimation、CALayer等

CoreAnimation

是QuartzCore重要部分。CoreAnimation中大量用到CoreGraphics中的类,原因是显然的,实现动画自然要用到图形库中的东西。

CoreText

CoreText是用来文字排版和处理字体的一个高级的底层技术。CoreText直接和CoreGraphics(CG)一起工作。
图文混排:简单来说,就是在富文本中插入一个空白的占位符,通过相关代理计算图片的尺寸信息,更具富文本计算出来的frame设置对应图片位置,绘制图片。

Foundation框架

所有的Mac OS X和IOS程序都是由大量的对象构成,而这些对象的根对象绝大多数是NSObject,NSObject就处在Foundation框架之中,也可理解为Foundation是对NSObject的操作框架。通常我们会将他们分为几类:

NSObject

Objective-C 中 NSObject是大多数类的根类。

@interface NSObject <NSObject> {  
    Class isa  OBJC_ISA_AVAILABILITY;  
}  

从中可以看出NSObject有一个isa属性,类型是Class。Class 是一个 objc_class 结构类型的指针

struct objc_class {  
     struct objc_class *isa;  
  
     struct objc_class *super_class;   
     const char *name;    
     long version;  
     long info;  
     long instance_size;  
     struct objc_ivar_list *ivars;  
     struct objc_method_list **methodLists;  
     struct objc_cache *cache;  
     struct objc_protocol_list *protocols;  
};  

可以看到Objective-C对象系统的基石:struct objc_class结构如下:

NSObject定义的方法主要是生成、释放对象以及对象的基础操作和内存管理。
其中类方法有:

+ (void)load;
+ (void)initialize;
+ (instancetype)new OBJC_SWIFT_UNAVAILABLE("use object initializers instead");
+ (instancetype)allocWithZone:(struct _NSZone *)zone OBJC_SWIFT_UNAVAILABLE("use object initializers instead");
+ (instancetype)alloc OBJC_SWIFT_UNAVAILABLE("use object initializers instead");
+ (id)copyWithZone:(struct _NSZone *)zone OBJC_ARC_UNAVAILABLE;
+ (id)mutableCopyWithZone:(struct _NSZone *)zone OBJC_ARC_UNAVAILABLE;
+ (BOOL)instancesRespondToSelector:(SEL)aSelector;
+ (BOOL)conformsToProtocol:(Protocol *)protocol;
+ (IMP)instanceMethodForSelector:(SEL)aSelector;
+ (NSMethodSignature *)instanceMethodSignatureForSelector:(SEL)aSelector OBJC_SWIFT_UNAVAILABLE("");
+ (BOOL)isSubclassOfClass:(Class)aClass;
+ (BOOL)resolveClassMethod:(SEL)sel OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0);
+ (BOOL)resolveInstanceMethod:(SEL)sel OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0);

+ (NSUInteger)hash;
+ (Class)superclass;
+ (Class)class OBJC_SWIFT_UNAVAILABLE("use 'aClass.self' instead");
+ (NSString *)description;
+ (NSString *)debugDescription;

实例方法有:

- (instancetype)init;
- (void)dealloc OBJC_SWIFT_UNAVAILABLE("use 'deinit' to define a de-initializer");
- (void)finalize OBJC_DEPRECATED("Objective-C garbage collection is no longer supported");
- (id)copy;
- (id)mutableCopy;
- (IMP)methodForSelector:(SEL)aSelector;
- (void)doesNotRecognizeSelector:(SEL)aSelector;
- (id)forwardingTargetForSelector:(SEL)aSelector OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0);
- (void)forwardInvocation:(NSInvocation *)anInvocation OBJC_SWIFT_UNAVAILABLE("");
- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector OBJC_SWIFT_UNAVAILABLE("");
- (BOOL)allowsWeakReference UNAVAILABLE_ATTRIBUTE;
- (BOOL)retainWeakReference UNAVAILABLE_ATTRIBUTE;

UIResponder

继承于NSObject,为处理响应事件和响应链,是NSObject图中最大分支的根类。主要包括UIApplication、UIView、UIViewController

上一篇 下一篇

猜你喜欢

热点阅读