implement static method

NSEditor implement({
  1. required void discardEditing(),
  2. required bool commitEditing(),
  3. required void commitEditingWithDelegate_didCommitSelector_contextInfo_(
    1. ObjCObjectBase?,
    2. Pointer<ObjCSelector>,
    3. Pointer<Void>
    ),
  4. required bool commitEditingAndReturnError_(
    1. Pointer<Pointer<ObjCObject>> error
    ),
  5. bool $keepIsolateAlive = true,
})

Builds an object that implements the NSEditor protocol. To implement multiple protocols, use addToBuilder or objc.ObjCProtocolBuilder directly.

If $keepIsolateAlive is true, this protocol will keep this isolate alive until it is garbage collected by both Dart and ObjC.

Implementation

static NSEditor implement({
  required void Function() discardEditing,
  required bool Function() commitEditing,
  required void Function(
    objc.ObjCObjectBase?,
    ffi.Pointer<objc.ObjCSelector>,
    ffi.Pointer<ffi.Void>,
  )
  commitEditingWithDelegate_didCommitSelector_contextInfo_,
  required bool Function(ffi.Pointer<ffi.Pointer<objc.ObjCObject>>)
  commitEditingAndReturnError_,
  bool $keepIsolateAlive = true,
}) {
  final builder = objc.ObjCProtocolBuilder(debugName: 'NSEditor');
  NSEditor.discardEditing.implement(builder, discardEditing);
  NSEditor.commitEditing.implement(builder, commitEditing);
  NSEditor.commitEditingWithDelegate_didCommitSelector_contextInfo_.implement(
    builder,
    commitEditingWithDelegate_didCommitSelector_contextInfo_,
  );
  NSEditor.commitEditingAndReturnError_.implement(
    builder,
    commitEditingAndReturnError_,
  );
  builder.addProtocol($protocol);
  return NSEditor.castFrom(
    builder.build(keepIsolateAlive: $keepIsolateAlive),
  );
}