implement static method

NSMetadataQueryDelegate implement({
  1. ObjCObjectBase metadataQuery_replacementObjectForResultObject_(
    1. NSMetadataQuery,
    2. NSMetadataItem
    )?,
  2. ObjCObjectBase metadataQuery_replacementValueForAttribute_value_(
    1. NSMetadataQuery,
    2. NSString,
    3. ObjCObjectBase
    )?,
  3. bool $keepIsolateAlive = true,
})

Builds an object that implements the NSMetadataQueryDelegate 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 NSMetadataQueryDelegate implement({
  objc.ObjCObjectBase Function(NSMetadataQuery, NSMetadataItem)?
  metadataQuery_replacementObjectForResultObject_,
  objc.ObjCObjectBase Function(
    NSMetadataQuery,
    objc.NSString,
    objc.ObjCObjectBase,
  )?
  metadataQuery_replacementValueForAttribute_value_,
  bool $keepIsolateAlive = true,
}) {
  final builder = objc.ObjCProtocolBuilder(
    debugName: 'NSMetadataQueryDelegate',
  );
  NSMetadataQueryDelegate.metadataQuery_replacementObjectForResultObject_
      .implement(builder, metadataQuery_replacementObjectForResultObject_);
  NSMetadataQueryDelegate.metadataQuery_replacementValueForAttribute_value_
      .implement(builder, metadataQuery_replacementValueForAttribute_value_);
  builder.addProtocol($protocol);
  return NSMetadataQueryDelegate.castFrom(
    builder.build(keepIsolateAlive: $keepIsolateAlive),
  );
}