Я пытаюсь отладить проблему, с которой сталкиваюсь в сторонней библиотеке и достигла кирпичной стены.Проблема в том, что я вызываю библиотеку в Swift и передаю ей обратный вызов.Затем библиотека выполняет код Obj-C, который в итоге вызывает обратный вызов с NULL
, который необъяснимым образом завершается с EXC_BAD_ACCESS (code=1, address=0x0)
Swift-кодом:
return AWSMobileClient.sharedInstance().interceptApplication(app, didFinishLaunchingWithOptions: opts) { (res: Any?, err: Error?) in
guard err == nil else {
Log.e("Error registering with AWS: \(err!.localizedDescription)")
return
}
Log.i("No error registering with AWS")
}
Код Obj-C (упрощенно):
- (BOOL)interceptApplication:(UIApplication *)application
didFinishLaunchingWithOptions:(nullable NSDictionary *)launchOptions
resumeSessionWithCompletionHandler:(void (^)(id result, NSError *error))completionHandler {
completionHandler(NULL, NULL); // Crashes here if 1st argument is NULL
completionHandler(@"hello", NULL); // Doesn't crash
return YES;
}
Как видите, я правильно пометил обратный вызов Swift, чтобы он имел тип Any?
, поэтому он должен принять NULL/nil
без проблем.
Если кто-то может объяснитьпочему это происходит и как это исправить, это было бы замечательно.