学习笔记23-March Port、Core Motion、Message Filter Extension、dealloc

88 阅读3分钟

Mach Port

Mach 是卡内基梅隆大学由 Richard Rashid 和 Avie Tevanian 开发的内核。XNU 是 Apple 为其操作系统(macOS、iOS等)开发的混合内核,它结合了 Mach 微内核、BSD 衍生品和其它一些组件。

Mach Port 是 Mach 中用于进程间通信(IPC)的一个抽象概念。在 Mach 中,一个端口(port)是一个通信端点,用于发送和接收消息。

__CFRunLoopServiceMachPort 是一个私有函数,它用于在运行循环 Run Loop 中检查指定的 Mach Port 是否有消息到达。如果 Mach Port 上有消息等待,该函数会处理这些消息;如果没有消息,运行循环可能会让出 CPU,进入休眠状态,知道有新消息到达或者定时器触发。

Core Motion

Core Motion 是 iOS 中用于访问设备运动数据的框架。它提供了硬件加速计、陀螺仪和磁力计等传感器数据的直接访问,以及用于处理这些数据的高级接口。 以下是一些 Core Motion 框架中的主要 API:

  • CMMotionManager: 这是 Core Motion 框架的主要入口点,用于配置和启动运动传感器,以及获取运动数据
  • CMAccelerometerData: 包含加速度计数据的对象,提供三个轴的加速度值
  • CMGyroData: 包含陀螺仪数据的对象,提供三个轴的旋转速率
  • CMMagnetometerData: 包含磁力计数据的对象,提供三个轴的磁场强度
  • CMDeviceMotion: 包含设备运动数据的对象,提供设备的加速度、旋转速率、磁场和朝向等信息
  • CMPedometer: 用于访问步数和距离计算的数据
  • CMSensorRecorder: 用于记录和查询运动传感器数据的历史记录

Message Filter Extension

Message Filter Extension 是苹果 iOS 操作系统中的一个特殊类型的 App Extension,它允许应用程序为系统消息应用程序提供额外的消息过滤功能。通过这个扩展,应用程序可以帮助用户识别和过滤垃圾短信、骚扰短信。 IdentityLookup 仅适用于来自未知发件人的短信和彩信;它不适用于来自用户联系人列表中的发件人的消息或来自任何来源的 iMessage 消息。 Message Filter Extension 的实现流程如下:

  • 实现协议 ILMessageFilterQueryHandling 和 ILMessageFilterCapabilitiesQueryHandling。
  • 处理过滤逻辑:判断短信类型。
  • 用户隐私:不得收集或共享用户的敏感信息。
  • App Store 审核。

5b45eea5-fb97-427d-93e7-a5624cd384bd.png

dealloc流程

在Objective-C中,dealloc方法是对象生命周期中的一个关键点,用于释放对象占用的资源。当对象的引用计数归零,或者当对象被显示释放时,dealloc方法会被自动调用。

  • dealloc
    • _objc_rootDealloc()
      • objc_object::rootDealloc()
        • object_dispose()
          • objc_destructInstance()
            • object_cxxDestruct() 调用C++析构函数
            • _object_remove_associations() 移除关联对象
            • objc_object::clearDeallocating() 移除弱引用
          • free() 这一步释放内存

参考文档