<!--
{
  "availability" : [
    "iOS: 15.0.0 -",
    "iPadOS: 15.0.0 -",
    "macCatalyst: 15.0.0 -",
    "macOS: 12.0.0 -",
    "tvOS: 17.0.0 -",
    "visionOS: 1.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "PHASE",
  "identifier" : "/documentation/PHASE/PHASEEngine/init(updateMode:)",
  "metadataVersion" : "0.1.0",
  "role" : "Initializer",
  "symbol" : {
    "kind" : "Initializer",
    "modules" : [
      "PHASE"
    ],
    "preciseIdentifier" : "c:objc(cs)PHASEEngine(im)initWithUpdateMode:"
  },
  "title" : "init(updateMode:)"
}
-->

# init(updateMode:)

Creates an engine updated by the app or framework.

```
init(updateMode: PHASEEngine.UpdateMode)
```

## Parameters

`updateMode`

An option that controls the timing of internal framework updates.

## Discussion

The argument you choose determines the rate at which the engine consumes user commands, performs internal updates, and executes callbacks.

When an app calls a PHASE function, the framework defers processing the call until the next update. An engine you configure with [`PHASEEngine.UpdateMode.manual`](/documentation/PHASE/PHASEEngine/UpdateMode/manual) controls when the framework processes those calls. For example, an app can ensure that two sound events begin simultaneously by following their creation with an [`update()`](/documentation/PHASE/PHASEEngine/update()). Apps that don’t require advanced call synchronization select [`PHASEEngine.UpdateMode.automatic`](/documentation/PHASE/PHASEEngine/UpdateMode/automatic).

---

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)