Есть бридж React-Native. Birdge начинается с этого блока кода
static RCTPromiseResolveBlock SCANNER_RESOLVER = nil;
static RCTPromiseRejectBlock SCANNER_REJECTER = nil;
@implementation AppDelegate
RCT_EXPORT_MODULE(Scanner);
RCT_REMAP_METHOD(scan,
resolver:(RCTPromiseResolveBlock)resolve
rejecter:(RCTPromiseRejectBlock)reject)
{
dispatch_async(dispatch_get_main_queue(), ^{
SCANNER_RESOLVER=resolve;
SCANNER_REJECTER=reject;
UIViewController *vc = [UIStoryboard storyboardWithName:@"WeScanStoryBoard" bundle:nil].instantiateInitialViewController;
[[UIApplication sharedApplication].delegate.window.rootViewController presentViewController:vc animated:YES completion:nil];
});
}
У меня есть раскадровка на Swift. Я отправляю данные из swift в obj- c appdelegate.
if let appDelegate = UIApplication.shared.delegate as? AppDelegate {
let image:UIImage = results.croppedScan.image;
let strBase64 = image.jpegData(compressionQuality: 1)?.base64EncodedString() ?? "";
appDelegate.sendBase64Image(strBase64);
}
После этого я ловлю там строку base64
- (void)sendBase64Image:(NSString *)base64 {
NSLog(base64);
NSLog(test);
SCANNER_RESOLVER(base64);
}
Все в порядке, но ... SCANNER_RESOLVER выбросить исключение. Код EXC_BAD_ACCESS 2
Когда я запускаю SCANNER_RESOLVER на RCT_REMAP_METHOD, я никогда не получал ошибки. Но когда я использую его в этой функции, я получаю ошибку. Не знаю, почему и в чем моя ошибка.