zoukankan      html  css  js  c++  java
  • NSPort

    NSPort是一个描述通信通道的抽象类。通信发生在两个NSPort对象之中,这两个NSPort对象通常属于不同的进程或任务。分发对象系统使用NSPort对象来返回或发送NSProtMessage对象。你应该尽可能使用分发对象来完成应用间通信,必要时才使用NSPort对象。

    要接收发来的消息,NSPort对象必须作为输入源被添加到NSRunLoop对象中。NSConnection对象在初始化时自动添加它们的接收端口。

    当一个NSPort对象接收到一个端口消息,便把这条消息在handleMachMessage:或者handlePortMessge:消息中传送给它的代理。这个代理应该至少实现其中一个方法来处理要接收的消息,不管你想要实现什么功能。handleMachMessage:提供了一个早期的Mach内核消息,它以msg_header_t结构体为起始。handlePortMessage:提供了一个作为NSPortMessage对象的消息,这个对象是Mach消息面向对象的替代品。如果没有设置代理,这个NSPort对象会自己处理这条消息。

    当你使用NSPort对象完成消息处理,你必须首先使这个端口对象失效,然后再发送release消息。类似的处理还有,如果你的应用使用了垃圾回收,你必须先使端口失效,然后移除它的一些强引用。如果你没有是端口失效,就可能引起内存泄漏。要使端口失效,请调用invalidate方法。

    基础框架定义了三个具体的NSPort子类。NSMachPort和NSMessagePort只允许本地(在一样的机器上)通信。NSSocketPort允许本地和远程两种通讯,但是对于本地通信,NSSocketPort会更加耗费资源。创建NSPort对象,可以使用allocWithZone:或port,NSMachPort对象创建例外。

     

    那么这四局做了什么? 

  • 相关阅读:
    MongoDB 创建账户
    MongoDB高可用集群配置方案
    学习CEGUI亟待解决问题一:文本控件的格式问题
    第一讲
    ERP初阶(三):MRP基本原理
    ERP初阶(四):MRP基本构成
    学习CEGUI亟待解决问题二:消息事件传递机制问题
    Groovy处理null对象为空字符串
    silverlight与CSLA的快速应用05安装CslaExtension
    silverlight与CSLA的快速应用08客户端的CSLA代码
  • 原文地址:https://www.cnblogs.com/tangyuanby2/p/8028453.html
Copyright © 2011-2022 走看看