Какой синтаксис в этом `[объект setSomething: ^ {resol (...)}]` на Objective- C? - PullRequest
0 голосов
/ 15 февраля 2020

Я реверс-инжиниринг реактивного моста для библиотеки платежей, и я понятия не имею, что означает этот синтаксис. Это вызывает какую-то функцию? Оооо это вызывает некоторую функцию setCallBack ... которая является свойством, определенным внутри объекта checkout из MercadoPagoCheckout? И это свойство принимает другую функцию в качестве аргумента, и ^{ } является своего рода анонимным функциональным блоком?

Я думаю, я только что нашел ответ. Nevermind haha ​​

    //Set up Cancellation Callback
    [checkout setCallbackCancelWithCallback:^{
        [uiNavigationController setNavigationBarHidden:TRUE];
        [uiNavigationController popToRootViewControllerAnimated:NO];

        reject(@"PAYMENT_CANCELLED", @"Payment was cancelled by the user.", nil);
    }];

Вот полный код со скриншотом просто для удовольствия.

enter image description here

RCT_EXPORT_METHOD(startCheckoutForPayment: (NSString *) publicKey: (NSString *) preferenceId: (NSString *) color: (BOOL) enableDarkFont: (RCTPromiseResolveBlock) resolve: (RCTPromiseRejectBlock) reject) {

  UINavigationController *uiNavigationController = (UINavigationController *) [UIApplication sharedApplication].delegate.window.rootViewController;

  MercadoPagoCheckoutBuilder *builder = [[MercadoPagoCheckoutBuilder alloc] initWithPublicKey:publicKey preferenceId:preferenceId];
  MercadoPagoCheckout *checkout = [[MercadoPagoCheckout alloc] initWithBuilder:builder];

  //Set up Cancellation Callback
  [checkout setCallbackCancelWithCallback:^{
      [uiNavigationController setNavigationBarHidden:TRUE];
      [uiNavigationController popToRootViewControllerAnimated:NO];

        reject(@"PAYMENT_CANCELLED", @"Payment was cancelled by the user.", nil);
  }];

...
...