<!--
{
  "availability" : [
    "iOS: 12.0.0 -",
    "iPadOS: 12.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "ARKit",
  "identifier" : "/documentation/ARKit/ARAnchorCopying/init(anchor:)",
  "metadataVersion" : "0.1.0",
  "role" : "Initializer",
  "symbol" : {
    "kind" : "Initializer",
    "modules" : [
      "ARKit"
    ],
    "preciseIdentifier" : "c:objc(pl)ARAnchorCopying(im)initWithAnchor:"
  },
  "title" : "init(anchor:)"
}
-->

# init(anchor:)

Initializes a new anchor by copying custom information from another anchor.

```
init(anchor: ARAnchor)
```

## Parameters

`anchor`

The other anchor from which to copy information.

## Discussion

Each time ARKit generates a new [`ARFrame`](/documentation/ARKit/ARFrame) object (corresponding to an incoming frame of live camera video at 60 fps), ARKit calls this initializer to copy each of the [`anchors`](/documentation/ARKit/ARFrame/anchors) associated with the previous frame.

> Note:
> ARKit always calls this initializer with an `anchor` parameter of the same class as `self`.

If you subclass [`ARAnchor`](/documentation/ARKit/ARAnchor) to add extra properties, your implementation of this initializer should copy the values of those properties, then chain to the superclass initializer. For example, an AR game might define a `BoardAnchor` class to encode the position and size of a game board, so its version of this initializer would copy that `size` property:

```swift
required init(anchor: ARAnchor) {
    let other = anchor as! BoardAnchor
    self.size = other.size
    super.init(anchor: other)
}
```

> Important:
> Carefully consider performance and your app’s data model when storing references to other objects in anchors. Copying custom values might be expensive, but multiple references to the same data might or might not be correct for your app

---

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)