---
name: "Message"
section: "3poc"
platform: "linux"
package: "objc-poc"
version: "3.1.26-2"
release: "Debian 3.0 (Woody)"
platforms: ["linux"]
url: "https://new.carta.tech/Message/3poc"
---

# Message(3poc)

Portable Object Compiler Message class

## NAME

Message - Portable Object Compiler Message class

## Message

**Inherits from:**

Object

**Maturity Index:**

Experimental

## Class Description

Message instances are used for forwarding Objective-C messages.  When an object doesn't respond to a message, the  **doesNotUnderstand:** method is invoked, with an argument that is an instance of this class :

\- doesNotUnderstand:msg\
 {\
 \[msg sentTo:someObject\];\
 return self;\
 }\

The user may override  **-doesNotUnderstand:** to send a  **sentTo:** message, which will forward the message to  *someObject* .  If  *someObject* doesn't respond to the message, it will receive a  **doesNotUnderstand:** message, and so on.

**Note:**

To forward class (factory) methods, override the class method  **+doesNotUnderstand:** .

Also see Object's  **doesNotUnderstand:** method for more details.

## Method types

**Creating Messages**

\* selector:dispatch:args:

**Querying Messages**

\* selector

**Sending Messages**

\* sentTo:

## Methods

selector:dispatch:args:

\+ **selector** :(SEL) *s* **dispatch** :(ARGIMP) *d* **args** :(void \*) *a*

Creates a Message instance with the indicated selector name and pointer to argument structure.  The argument structure for a message consists of return value of the method (if not void), followed by the arguments of the method :

struct {\
 int ret;\
 int a;\
 double d;\
 }\

The above structure corresponds to a method such as (int)foo:(int)a bar:(double)d.

The  *dispatch* argument is a (compiler generated) function that decodes the arguments from the argument structure, and dispatches the messages.

selector

\- ( SEL ) **selector**

Returns the selector for this message.

sentTo:

\- **sentTo** : *receiver*

Forwards the message to  *receiver* (if it's not  **nil** ) and returns the message itself ( *self* ), not the return value of the message that was forwarded to  *receiver* .  The latter return value is associated to the Message instance, so that it can be returned to the sender of the message that caused a  **doesNotUnderstand:** message to be sent.
