implement static method

NSURLHandleClient implement({
  1. required void URLHandle_resourceDataDidBecomeAvailable_(
    1. NSURLHandle,
    2. NSData
    ),
  2. required void URLHandleResourceDidBeginLoading_(
    1. NSURLHandle
    ),
  3. required void URLHandleResourceDidFinishLoading_(
    1. NSURLHandle
    ),
  4. required void URLHandleResourceDidCancelLoading_(
    1. NSURLHandle
    ),
  5. required void URLHandle_resourceDidFailLoadingWithReason_(
    1. NSURLHandle,
    2. NSString
    ),
  6. bool $keepIsolateAlive = true,
})

Builds an object that implements the NSURLHandleClient 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 NSURLHandleClient implement({
  required void Function(objc.NSURLHandle, objc.NSData)
  URLHandle_resourceDataDidBecomeAvailable_,
  required void Function(objc.NSURLHandle) URLHandleResourceDidBeginLoading_,
  required void Function(objc.NSURLHandle) URLHandleResourceDidFinishLoading_,
  required void Function(objc.NSURLHandle) URLHandleResourceDidCancelLoading_,
  required void Function(objc.NSURLHandle, objc.NSString)
  URLHandle_resourceDidFailLoadingWithReason_,
  bool $keepIsolateAlive = true,
}) {
  final builder = objc.ObjCProtocolBuilder(debugName: 'NSURLHandleClient');
  NSURLHandleClient.URLHandle_resourceDataDidBecomeAvailable_.implement(
    builder,
    URLHandle_resourceDataDidBecomeAvailable_,
  );
  NSURLHandleClient.URLHandleResourceDidBeginLoading_.implement(
    builder,
    URLHandleResourceDidBeginLoading_,
  );
  NSURLHandleClient.URLHandleResourceDidFinishLoading_.implement(
    builder,
    URLHandleResourceDidFinishLoading_,
  );
  NSURLHandleClient.URLHandleResourceDidCancelLoading_.implement(
    builder,
    URLHandleResourceDidCancelLoading_,
  );
  NSURLHandleClient.URLHandle_resourceDidFailLoadingWithReason_.implement(
    builder,
    URLHandle_resourceDidFailLoadingWithReason_,
  );
  builder.addProtocol($protocol);
  return NSURLHandleClient.castFrom(
    builder.build(keepIsolateAlive: $keepIsolateAlive),
  );
}