implementAsBlocking static method

NSUserActivityDelegate implementAsBlocking({
  1. void userActivityWillSave_(
    1. NSUserActivity
    )?,
  2. void userActivityWasContinued_(
    1. NSUserActivity
    )?,
  3. void userActivity_didReceiveInputStream_outputStream_(
    1. NSUserActivity,
    2. NSInputStream,
    3. NSOutputStream
    )?,
  4. bool $keepIsolateAlive = true,
})

Builds an object that implements the NSUserActivityDelegate 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 NSUserActivityDelegate implementAsBlocking({
  void Function(NSUserActivity)? userActivityWillSave_,
  void Function(NSUserActivity)? userActivityWasContinued_,
  void Function(NSUserActivity, objc.NSInputStream, objc.NSOutputStream)?
  userActivity_didReceiveInputStream_outputStream_,
  bool $keepIsolateAlive = true,
}) {
  final builder = objc.ObjCProtocolBuilder(
    debugName: 'NSUserActivityDelegate',
  );
  NSUserActivityDelegate.userActivityWillSave_.implementAsBlocking(
    builder,
    userActivityWillSave_,
  );
  NSUserActivityDelegate.userActivityWasContinued_.implementAsBlocking(
    builder,
    userActivityWasContinued_,
  );
  NSUserActivityDelegate.userActivity_didReceiveInputStream_outputStream_
      .implementAsBlocking(
        builder,
        userActivity_didReceiveInputStream_outputStream_,
      );
  builder.addProtocol($protocol);
  return NSUserActivityDelegate.castFrom(
    builder.build(keepIsolateAlive: $keepIsolateAlive),
  );
}