<!--
{
  "availability" : [
    "iOS: 17.0.0 -",
    "iPadOS: 17.0.0 -",
    "macCatalyst: -",
    "macOS: 14.0.0 -",
    "tvOS: 17.0.0 -",
    "visionOS: -",
    "watchOS: 10.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "XPC",
  "identifier" : "/documentation/XPC/XPCSession/sendSync(message:)",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Method",
  "symbol" : {
    "kind" : "Instance Method",
    "modules" : [
      "XPC"
    ],
    "preciseIdentifier" : "s:3XPC10XPCSessionC8sendSync7messageAA13XPCDictionaryVAG_tKF"
  },
  "title" : "sendSync(message:)"
}
-->

# sendSync(message:)

Sends a dictionary message over the session to the destination service, blocking the caller until receiving a reply.

```
func sendSync(message: XPCDictionary) throws -> XPCDictionary
```

## Parameters

`message`

A dictionary object that contains the message to send.

## Return Value

If successful, the response to the message; otherwise this method throws an error.

## Discussion

This method supports priority inversion avoidance. Use this method instead of calling [`send(message:replyHandler:)`](/documentation/XPC/XPCSession/send(message:replyHandler:)) and using a semaphore.

Be judicious about your use of this API. It can block indefinitely. Calling this method while the session’s target queue is blocked may lead to deadlocks in certain scenarios. For that reason, invoking this method from the session’s target queue results in a crash.

> Tip:
> If you provide an API that uses this method, consider allowing callers to specify a queue and callback handler to let you provide results asynchronously.

Sessions send messages serially in a first-in, first-out (FIFO) order. This method is safe to call from multiple dispatch queues. The session can’t indicate whether the message *delivery* is successful or not. While the session may successfully enqueue the message at the remote end of the connection, there’s no guarantee about when the destination dequeues the message and invokes the receiving session’s handler.

> Important:
> If you create an inactive session, you must activate it before sending messages. Calling this method with an inactive session crashes.

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)