<!--
{
  "availability" : [
    "macOS: 10.8.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "AppKit",
  "identifier" : "/documentation/AppKit/NSDocument/lock(completionHandler:)-6zuhh",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Method",
  "symbol" : {
    "kind" : "Instance Method",
    "modules" : [
      "AppKit"
    ],
    "preciseIdentifier" : "c:objc(cs)NSDocument(im)lockDocumentWithCompletionHandler:"
  },
  "title" : "lock(completionHandler:)"
}
-->

# lock(completionHandler:)

Prevents the user from making further changes to the document.

```
func lock(completionHandler: ((Bool) -> Void)? = nil)
```

## Parameters

`completionHandler`

The completion handler block object passed in to be invoked after locking is completed, regardless of success or failure of locking.

## Discussion

By default, this method first ensures that any editor who has registered using Cocoa Binding’s NSEditorRegistration informal protocol has committed all changes and then autosaves the document, if necessary, before attempting to lock it using the [`lock(completionHandler:)`](/documentation/AppKit/NSDocument/lock(completionHandler:)-161qv) method. Upon successful locking, the [`isLocked`](/documentation/AppKit/NSDocument/isLocked) property is set to `[YES]`. Documents whose [`fileURL`](/documentation/AppKit/NSDocument/fileURL) property is set to `nil` cannot be locked.

---

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)