implement static method

NSKeyedArchiverDelegate implement({
  1. ObjCObjectBase? archiver_willEncodeObject_(
    1. NSKeyedArchiver,
    2. ObjCObjectBase
    )?,
  2. void archiver_didEncodeObject_(
    1. NSKeyedArchiver,
    2. ObjCObjectBase?
    )?,
  3. void archiver_willReplaceObject_withObject_(
    1. NSKeyedArchiver,
    2. ObjCObjectBase?,
    3. ObjCObjectBase?
    )?,
  4. void archiverWillFinish_(
    1. NSKeyedArchiver
    )?,
  5. void archiverDidFinish_(
    1. NSKeyedArchiver
    )?,
  6. bool $keepIsolateAlive = true,
})

Builds an object that implements the NSKeyedArchiverDelegate 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 NSKeyedArchiverDelegate implement({
  objc.ObjCObjectBase? Function(NSKeyedArchiver, objc.ObjCObjectBase)?
  archiver_willEncodeObject_,
  void Function(NSKeyedArchiver, objc.ObjCObjectBase?)?
  archiver_didEncodeObject_,
  void Function(NSKeyedArchiver, objc.ObjCObjectBase?, objc.ObjCObjectBase?)?
  archiver_willReplaceObject_withObject_,
  void Function(NSKeyedArchiver)? archiverWillFinish_,
  void Function(NSKeyedArchiver)? archiverDidFinish_,
  bool $keepIsolateAlive = true,
}) {
  final builder = objc.ObjCProtocolBuilder(
    debugName: 'NSKeyedArchiverDelegate',
  );
  NSKeyedArchiverDelegate.archiver_willEncodeObject_.implement(
    builder,
    archiver_willEncodeObject_,
  );
  NSKeyedArchiverDelegate.archiver_didEncodeObject_.implement(
    builder,
    archiver_didEncodeObject_,
  );
  NSKeyedArchiverDelegate.archiver_willReplaceObject_withObject_.implement(
    builder,
    archiver_willReplaceObject_withObject_,
  );
  NSKeyedArchiverDelegate.archiverWillFinish_.implement(
    builder,
    archiverWillFinish_,
  );
  NSKeyedArchiverDelegate.archiverDidFinish_.implement(
    builder,
    archiverDidFinish_,
  );
  builder.addProtocol($protocol);
  return NSKeyedArchiverDelegate.castFrom(
    builder.build(keepIsolateAlive: $keepIsolateAlive),
  );
}