implementAsBlocking static method

NSKeyedUnarchiverDelegate implementAsBlocking({
  1. ObjCObjectBase? unarchiver_cannotDecodeObjectOfClassName_originalClasses_(
    1. NSKeyedUnarchiver,
    2. NSString,
    3. NSArray
    )?,
  2. ObjCObjectBase? unarchiver_didDecodeObject_(
    1. NSKeyedUnarchiver,
    2. ObjCObjectBase?
    )?,
  3. void unarchiver_willReplaceObject_withObject_(
    1. NSKeyedUnarchiver,
    2. ObjCObjectBase,
    3. ObjCObjectBase
    )?,
  4. void unarchiverWillFinish_(
    1. NSKeyedUnarchiver
    )?,
  5. void unarchiverDidFinish_(
    1. NSKeyedUnarchiver
    )?,
  6. bool $keepIsolateAlive = true,
})

Builds an object that implements the NSKeyedUnarchiverDelegate protocol. To implement multiple protocols, use addToBuilder or objc.ObjCProtocolBuilder directly. All methods that can be implemented as blocking listeners will be.

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

Implementation

static NSKeyedUnarchiverDelegate implementAsBlocking({
  objc.ObjCObjectBase? Function(
    NSKeyedUnarchiver,
    objc.NSString,
    objc.NSArray,
  )?
  unarchiver_cannotDecodeObjectOfClassName_originalClasses_,
  objc.ObjCObjectBase? Function(NSKeyedUnarchiver, objc.ObjCObjectBase?)?
  unarchiver_didDecodeObject_,
  void Function(NSKeyedUnarchiver, objc.ObjCObjectBase, objc.ObjCObjectBase)?
  unarchiver_willReplaceObject_withObject_,
  void Function(NSKeyedUnarchiver)? unarchiverWillFinish_,
  void Function(NSKeyedUnarchiver)? unarchiverDidFinish_,
  bool $keepIsolateAlive = true,
}) {
  final builder = objc.ObjCProtocolBuilder(
    debugName: 'NSKeyedUnarchiverDelegate',
  );
  NSKeyedUnarchiverDelegate
      .unarchiver_cannotDecodeObjectOfClassName_originalClasses_
      .implement(
        builder,
        unarchiver_cannotDecodeObjectOfClassName_originalClasses_,
      );
  NSKeyedUnarchiverDelegate.unarchiver_didDecodeObject_.implement(
    builder,
    unarchiver_didDecodeObject_,
  );
  NSKeyedUnarchiverDelegate.unarchiver_willReplaceObject_withObject_
      .implementAsBlocking(builder, unarchiver_willReplaceObject_withObject_);
  NSKeyedUnarchiverDelegate.unarchiverWillFinish_.implementAsBlocking(
    builder,
    unarchiverWillFinish_,
  );
  NSKeyedUnarchiverDelegate.unarchiverDidFinish_.implementAsBlocking(
    builder,
    unarchiverDidFinish_,
  );
  builder.addProtocol($protocol);
  return NSKeyedUnarchiverDelegate.castFrom(
    builder.build(keepIsolateAlive: $keepIsolateAlive),
  );
}