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.
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
- + port
- + portWithMachPort:
- - initWithMachPort:
- Getting the Mach port
- - machPort
- Validation
- - invalidate
- - isValid
- Setting the delegate
- - setDelegate:
- - delegate
- Creating connections
- - addConnection:toRunLoop:forMode:
- - removeConnection:fromRunLoop:forMode:
- Setting information
- - sendBeforeDate:components:from:reserved:
- - reservedSpaceLength
+ (NSPort *)port
+ (NSPort *)portWithMachPort:(int)machPort
- (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:
- (id)initWithMachPort:(int)machPort
This method is the designated initializer for the NSPort class. Returns self.
- (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
- (int)machPort
- (void)removeConnection:(NSConnection
*)connection
fromRunLoop:(NSRunLoop *)runLoop
forMode:(NSString *)mode
/System/Developer/Examples/Foundation
for
an example implementation.- (unsigned int)reservedSpaceLength
(BOOL)sendBeforeDate:(NSDate
*)limitDate
components:(NSMutableArray *)components
from:(NSPort *)receivePort
reserved:(unsigned int)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:.
- (NSDate *)limitDateForMode:(NSString *)mode
See Also: - limitDateForMode: (NSRunLoop)
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.