- Inherits from:
- NSObject
- Conforms to:
- NSCoding
- NSCopying
- NSObject (NSObject)
Declared in:
- Foundation/NSPort.h
An NSPort represents a communication channel to or from another NSPort, which typically resides in a different thread or task. The distributed objects system uses NSPort objects to send NSPortMessages back and forth. You should implement interapplication communication using distributed objects whenever possible, and use NSPorts only when necessary.
Note: An
NSPort is essentially the object form of a Mach port. To use NSPorts
effectively you should be familiar with Mach ports, port access
rights, and Mach messages. See the Mach OS documentation for more
information.When an NSPort receives an NSPortMessage, it forwards
the message to its delegate in a handleMachMessage: or handlePortMessage: message.
The delegate should implement only one of these methods to process
the incoming message in whatever form desired. handleMachMessage: provides a message
as a raw Mach message beginning with a msg_header_t structure. handlePortMessage: provides
a message as an NSPortMessage object, which is an object-oriented
wrapper for a Mach message.NSPort is intended to receive
incoming messages that need to be added to an NSRunLoop. See the
NSRunLoop class specification for more information. |
NSCoding
- - encodeWithCoder:
- - initWithCoder:
NSCopying
- - copyWithZone:
- Creating instances
- + allocWithZone:
- + port
- Validation
- - invalidate
- - isValid
- Setting the delegate
- - setDelegate:
- - delegate
- Creating connections
- - addConnection:toRunLoop:forMode:
- - removeConnection:fromRunLoop:forMode:
- Setting information
- - sendBeforeDate:components:from:reserved:
- - sendBeforeDate:msgid:components:from:reserved:
- - reservedSpaceLength
- Port monitoring
- - removeFromRunLoop:forMode:
- - scheduleInRunLoop:forMode:
+ (id)allocWithZone:(NSZone
*)zone
Otherwise, it returns an instance of a concrete subclass which can be used for messaging between threads or processes on the local machine.
+ (NSPort *)port
- (void)addConnection:(NSConnection
*)connection
toRunLoop:(NSRunLoop *)runLoop
forMode:(NSString *)mode
/System/Developer/Examples/Foundation
for
an example implementation.See Also: addPort:forMode: (NSRunLoop)
- (id)delegate
See Also: - setDelegate:
- (void)invalidate
See Also: - isValid
- (BOOL)isValid
NO
if
the NSPort is known to be invalid, YES
otherwise
(an NSPort only notes that it has become invalid when it tries to
send or receive a message). An NSPort becomes
invalid when its underlying communication resource, which is operating-system
dependent, is closed or damaged.See Also: - invalidate
- (void)removeConnection:(NSConnection
*)connection
fromRunLoop:(NSRunLoop *)runLoop
forMode:(NSString *)mode
/System/Developer/Examples/Foundation
for
an example implementation.- (void)removeFromRunLoop:(NSRunLoop
*)runLoop
forMode:(NSString *)mode
See Also: - scheduleInRunLoop:forMode:
- (unsigned)reservedSpaceLength
- (void)scheduleInRunLoop:(NSRunLoop
*)runLoop
forMode:(NSString *)mode
See Also: - removeFromRunLoop:forMode:
- (BOOL)sendBeforeDate:(NSDate
*)limitDate
components:(NSMutableArray *)components
from:(NSPort *)receivePort
reserved:(unsigned)headerSpaceReserved
/System/Developer/Examples/Foundation
for
an example implementation.- (BOOL)sendBeforeDate:(NSDate
*)limitDate
msgid:(unsigned)msgID
components:(NSMutableArray *)components
from:(NSPort *)receivePort
reserved:(unsigned)headerSpaceReserved
/System/Developer/Examples/Foundation
for
an example implementation.- (void)setDelegate:(id)anObject
See Also: - delegate
- (void)handleMachMessage:(void
*)machMessage
The delegate should implement only one of handleMachMessage: and handlePortMessage:.
- (void)handlePortMessage:(NSPortMessage
*)portMessage
The delegate should implement only one of handleMachMessage: and handlePortMessage:.
Posted from the invalidate method, which is invoked when the NSPort is deallocated or when it notices that its communication channel has been damaged. This notification contains a notification object but no userInfo dictionary. The notification object is the NSPort object that has become invalid.
The NSPort object posting this notification is no longer useful, so all receivers should unregister themselves for any notifications involving the NSPort. A method receiving this notification should check to see which port became invalid before attempting to do anything. In particular, observers that receive all NSPortDidBecomeInvalidNotification's should be aware that communication with the window server is handled through an NSPort. If this port becomes invalid, drawing operations will cause a fatal error.