implementAsBlocking static method

NSObjectProtocol implementAsBlocking({
  1. required ObjCObject autorelease(),
  2. required ObjCObject class$(),
  3. required bool conformsToProtocol_(
    1. Protocol
    ),
  4. NSString debugDescription()?,
  5. required NSString description(),
  6. required int hash(),
  7. required bool isEqual_(
    1. ObjCObject
    ),
  8. required bool isKindOfClass_(
    1. ObjCObject
    ),
  9. required bool isMemberOfClass_(
    1. ObjCObject
    ),
  10. required bool isProxy(),
  11. required ObjCObject performSelector_(
    1. Pointer<ObjCSelector>
    ),
  12. required ObjCObject performSelector_withObject_(
    1. Pointer<ObjCSelector>,
    2. ObjCObject
    ),
  13. required ObjCObject performSelector_withObject_withObject_(
    1. Pointer<ObjCSelector>,
    2. ObjCObject,
    3. ObjCObject
    ),
  14. required void release(),
  15. required bool respondsToSelector_(
    1. Pointer<ObjCSelector>
    ),
  16. required ObjCObject retain(),
  17. required int retainCount(),
  18. required ObjCObject self(),
  19. required ObjCObject superclass(),
  20. required Pointer<NSZone> zone(),
  21. bool $keepIsolateAlive = true,
})

Builds an object that implements the NSObject 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 NSObjectProtocol implementAsBlocking({
  required objc.ObjCObject Function() autorelease,
  required objc.ObjCObject Function() class$,
  required bool Function(Protocol) conformsToProtocol_,
  NSString Function()? debugDescription,
  required NSString Function() description,
  required int Function() hash,
  required bool Function(objc.ObjCObject) isEqual_,
  required bool Function(objc.ObjCObject) isKindOfClass_,
  required bool Function(objc.ObjCObject) isMemberOfClass_,
  required bool Function() isProxy,
  required objc.ObjCObject Function(ffi.Pointer<objc.ObjCSelector>)
  performSelector_,
  required objc.ObjCObject Function(
    ffi.Pointer<objc.ObjCSelector>,
    objc.ObjCObject,
  )
  performSelector_withObject_,
  required objc.ObjCObject Function(
    ffi.Pointer<objc.ObjCSelector>,
    objc.ObjCObject,
    objc.ObjCObject,
  )
  performSelector_withObject_withObject_,
  required void Function() release,
  required bool Function(ffi.Pointer<objc.ObjCSelector>) respondsToSelector_,
  required objc.ObjCObject Function() retain,
  required int Function() retainCount,
  required objc.ObjCObject Function() self,
  required objc.ObjCObject Function() superclass,
  required ffi.Pointer<NSZone> Function() zone,
  bool $keepIsolateAlive = true,
}) {
  final builder = objc.ObjCProtocolBuilder(debugName: 'NSObject');
  NSObjectProtocol$Builder.autorelease.implement(builder, autorelease);
  NSObjectProtocol$Builder.class$.implement(builder, class$);
  NSObjectProtocol$Builder.conformsToProtocol_.implement(
    builder,
    conformsToProtocol_,
  );
  NSObjectProtocol$Builder.debugDescription.implement(
    builder,
    debugDescription,
  );
  NSObjectProtocol$Builder.description.implement(builder, description);
  NSObjectProtocol$Builder.hash.implement(builder, hash);
  NSObjectProtocol$Builder.isEqual_.implement(builder, isEqual_);
  NSObjectProtocol$Builder.isKindOfClass_.implement(builder, isKindOfClass_);
  NSObjectProtocol$Builder.isMemberOfClass_.implement(
    builder,
    isMemberOfClass_,
  );
  NSObjectProtocol$Builder.isProxy.implement(builder, isProxy);
  NSObjectProtocol$Builder.performSelector_.implement(
    builder,
    performSelector_,
  );
  NSObjectProtocol$Builder.performSelector_withObject_.implement(
    builder,
    performSelector_withObject_,
  );
  NSObjectProtocol$Builder.performSelector_withObject_withObject_.implement(
    builder,
    performSelector_withObject_withObject_,
  );
  NSObjectProtocol$Builder.release.implementAsBlocking(builder, release);
  NSObjectProtocol$Builder.respondsToSelector_.implement(
    builder,
    respondsToSelector_,
  );
  NSObjectProtocol$Builder.retain.implement(builder, retain);
  NSObjectProtocol$Builder.retainCount.implement(builder, retainCount);
  NSObjectProtocol$Builder.self.implement(builder, self);
  NSObjectProtocol$Builder.superclass.implement(builder, superclass);
  NSObjectProtocol$Builder.zone.implement(builder, zone);
  builder.addProtocol($protocol);
  return NSObjectProtocol.as(
    builder.build(keepIsolateAlive: $keepIsolateAlive),
  );
}