美文网首页iOS面试
iOS-继承树(转)

iOS-继承树(转)

作者: SK丿希望 | 来源:发表于2018-11-05 23:09 被阅读27次

前言
开发久了,自己都会封装一些常用的工具类,这样虽然开发速度上去了,但是底层的东西,慢慢的就会被我们所淡忘,感觉没事还是来看看基础吧,说不定哪天去面试就被问到了了😂,每天进步一点点


image.png

NSObject

所有 Objective-C 对象的基类,封装了内存管理,消息的传递机制等底层逻辑。

UIResponder

UIResponder 定义了响应和处理事件的接口。它是 UIApplication 和 UIView 的父类,而 UIView 则是 UIWindow 的父类。

有两种一般事件:

  • 点击事件(Touche Events)
  • 手势事件(Motion Events)

除此之外还有:

  • 远程控制事件(Remote Control Events)
  • 重压事件(Press Events)(iOS 9.0 3D Touch)

点击 事件的主要处理方法有:

  • touchesBegan:withEvent:
  • touchesMoved:withEvent:
  • touchesEnded:withEvent:
  • touchesCancelled:withEvent:.

iOS 3.0 引入了 手势 事件,特别是摇一摇。
iOS 4.0 增加了远程控制事件,包括控制中心和耳机线控:

image.png

UIView

UIView 定义了一个屏幕上的矩形区域,以及管理这个区域内容的接口。UIView 提供了一个基本行为就是为这个矩形区域填充背景色(Background Color)。

UIControl

UIControl 是 UIButton,UISwitch,UITextField 以及 UISegmentedControl 等类的父类。

不要使用 UIControl 的实例,而是写 UIControl 的子类。

UIControl 子类的主要工作就是将 UIResponder 收集到的复杂事件,变成简单的控制事件(UIControl Events)。而为了实现这个过程,UIControl 引入了 Target-Action 机制。

typedef NS_OPTIONS(NSUInteger, UIControlEvents) {
    UIControlEventTouchDown                                         = 1 <<  0,      // on all touch downs
    UIControlEventTouchDownRepeat                                   = 1 <<  1,      // on multiple touchdowns (tap count > 1)
    UIControlEventTouchDragInside                                   = 1 <<  2,
    UIControlEventTouchDragOutside                                  = 1 <<  3,
    UIControlEventTouchDragEnter                                    = 1 <<  4,
    UIControlEventTouchDragExit                                     = 1 <<  5,
    UIControlEventTouchUpInside                                     = 1 <<  6,
    UIControlEventTouchUpOutside                                    = 1 <<  7,
    UIControlEventTouchCancel                                       = 1 <<  8,

    UIControlEventValueChanged                                      = 1 << 12,     // sliders, etc.
    UIControlEventPrimaryActionTriggered NS_ENUM_AVAILABLE_IOS(9_0) = 1 << 13,     // semantic action: for buttons, etc.

    UIControlEventEditingDidBegin                                   = 1 << 16,     // UITextField
    UIControlEventEditingChanged                                    = 1 << 17,
    UIControlEventEditingDidEnd                                     = 1 << 18,
    UIControlEventEditingDidEndOnExit                               = 1 << 19,     // 'return key' ending editing

    UIControlEventAllTouchEvents                                    = 0x00000FFF,  // for touch events
    UIControlEventAllEditingEvents                                  = 0x000F0000,  // for UITextField
    UIControlEventApplicationReserved                               = 0x0F000000,  // range available for application use
    UIControlEventSystemReserved                                    = 0xF0000000,  // range reserved for internal framework use
    UIControlEventAllEvents                                         = 0xFFFFFFFF
};

此外,UIControl 还定义了状态 UIControlState。

typedef NS_OPTIONS(NSUInteger, UIControlState) {
    UIControlStateNormal       = 0,
    UIControlStateHighlighted  = 1 << 0,                  // used when UIControl isHighlighted is set
    UIControlStateDisabled     = 1 << 1,
    UIControlStateSelected     = 1 << 2,                  // flag usable by app (see below)
    UIControlStateFocused NS_ENUM_AVAILABLE_IOS(9_0) = 1 << 3, // Applicable only when the screen supports focus
    UIControlStateApplication  = 0x00FF0000,              // additional flags available for application use
    UIControlStateReserved     = 0xFF000000               // flags reserved for internal framework use
};

以上来源

UIKit结构图

image.png

相关文章

  • iOS-继承树(转)

    前言开发久了,自己都会封装一些常用的工具类,这样虽然开发速度上去了,但是底层的东西,慢慢的就会被我们所淡忘,感觉没...

  • 多路复用

    继承树 SelectionKey继承树: Selector继承树: SelectorProvider继承树: Se...

  • IOS-继承相关

    今天来为有些在继承这方面困扰的兄弟解解惑。 两个类 一个viewcontroller 一个viewcontroll...

  • ios-坐标系统

    转—ios-坐标系统(详解UIView的frame、bounds跟center属性 1、概要 翻开ios官方开发文...

  • iOS-关于继承、分类

    一、前言 笔者最近一直忙于开发业务需求,频繁的使用着继承、分类,切身的体会到很多需求用这两种方案都可以解决,这就面...

  • iOS-私有API与runtime

    iOS-私有API与runtime iOS-私有API与runtime

  • iOS-代码混淆加固策略

    iOS-代码混淆加固策略 iOS-代码混淆加固策略

  • iOS-性能优化深入探究

    iOS-性能优化深入探究 iOS-性能优化深入探究

  • 2018/6/6 成功日志

    代位继承:法定继承,继承人在被继承人前死亡,晚辈直系血亲,有继承资格。 转继承:继承开始后财产分割前。 ——排列整...

  • UIButton 继承树

    继承树 UIButton -> UIControl -> UIView -> UIResponder -> NSO...

网友评论

    本文标题:iOS-继承树(转)

    本文链接:https://www.haomeiwen.com/subject/dcaexqtx.html