implementAsBlocking static method

NSDiscardableContent implementAsBlocking({
  1. required bool beginContentAccess(),
  2. required void endContentAccess(),
  3. required void discardContentIfPossible(),
  4. required bool isContentDiscarded(),
  5. bool $keepIsolateAlive = true,
})

Builds an object that implements the NSDiscardableContent 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 NSDiscardableContent implementAsBlocking({
  required bool Function() beginContentAccess,
  required void Function() endContentAccess,
  required void Function() discardContentIfPossible,
  required bool Function() isContentDiscarded,
  bool $keepIsolateAlive = true,
}) {
  final builder = objc.ObjCProtocolBuilder(debugName: 'NSDiscardableContent');
  NSDiscardableContent.beginContentAccess.implement(
    builder,
    beginContentAccess,
  );
  NSDiscardableContent.endContentAccess.implementAsBlocking(
    builder,
    endContentAccess,
  );
  NSDiscardableContent.discardContentIfPossible.implementAsBlocking(
    builder,
    discardContentIfPossible,
  );
  NSDiscardableContent.isContentDiscarded.implement(
    builder,
    isContentDiscarded,
  );
  builder.addProtocol($protocol);
  return NSDiscardableContent.castFrom(
    builder.build(keepIsolateAlive: $keepIsolateAlive),
  );
}