Я использую WKWebView
в своем приложении для получения данных от HTML с javascript, я использую этот код:
NSString *jsCall = [NSString stringWithFormat:@"xxxxxx('%@');",html];
__block NSString *searchJson = nil;
dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
dispatch_sync(dispatch_get_main_queue(), ^{
[self.searchWebView evaluateJavaScript:jsCall completionHandler:^(id result, NSError * _Nullable error) {
if (error || result == nil || ![result isKindOfClass:[NSString class]]) {
searchJson = nil;
} else {
searchJson = result;
}
dispatch_semaphore_signal(semaphore);
}];
});
dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
if ([NSString stringIsNilOrEmpty:searchJson]) {
return nil;
}
return [self getResultsWithJSonString:searchJson];
Мне нужно дождаться ответа, чтобы Я использую метод semaphore_wait
, он работает нормально, но иногда searchJson
высвобождается из памяти, и в [NSString stringIsNilOrEmpty:searchJson]
я получаю эту ошибку:
EXC_BAD_ACCESS KERN_INVALID_ADDRESS 0x0000000443439e70
Любая идея о том, как исправить эту проблему? Я использую Non-AR C в своем проекте.