У меня есть UIWebView, который использует JavaScriptCore. Я пытаюсь вызвать функцию ObjC с веб-страницы. Однако функцию необходимо вызывать асинхронно, поэтому я передаю функцию обратного вызова, которая вызывается при вызове асинхронной функции ObjC.
Насколько я понимаю, функции JS эквивалентны NSBlock через мост. Текущий код у меня есть:
context[@"currentUserLocation"] = ^( void(^callback)(NSString* str) )
{
NSLog(@"Starting Async Function");
//generic async function
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
NSLog(@"delay complete");
callback( @"return value" );
});
};
Есть ли что-то принципиально неправильное в том, что я делаю? На первый взгляд кажется, что ObjC не будет знать, в каком контексте запускать функцию обратного вызова.