Я пытаюсь использовать одну из новых функций iOS7, JavaScriptCore Framework. Я могу успешно вывести строку helloWorld из Javascript, но меня интересует выполнение HTTP POST в Javascript, а затем передача ответа в Objective-C. К сожалению, когда я создаю объект XMLHttpRequest
в Javascript, я получаю EXC_BAD_ACCESS (code=1, address=....)
.
Вот код Javascript (hello.js
):
var sendSamplePost = function () {
// when the following line is commented, everything works,
// if not, I get EXC_BAD_ACCESS (code=1, address=....)
var xmlHttp = new XMLHttpRequest();
};
var sayHello = function (name) {
return "Hello " + name + " from Javascript";
};
Вот код Objective-C внутри моего ViewController
:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
JSContext *context = [[JSContext alloc] initWithVirtualMachine:[[JSVirtualMachine alloc] init]];
NSString *scriptPath = [[NSBundle mainBundle] pathForResource:@"hello" ofType:@"js"];
NSLog(@"scriptPath: %@", scriptPath);
NSString *script = [NSString stringWithContentsOfFile:scriptPath encoding:NSUTF8StringEncoding error:nil];
NSLog(@"script: %@", script);
[context evaluateScript:script];
JSValue *sayHelloFunction = context[@"sayHello"];
JSValue *returnedValue = [sayHelloFunction callWithArguments:@[@"iOS"]];
// this works!
self.label.text = [returnedValue toString];
JSValue *sendSamplePostFunction = context[@"sendSamplePost"];
// this doesn't work :(
[sendSamplePostFunction callWithArguments:@[]];
}
Может ли быть так, что функциональность HTTP-запросов не предусмотрена в JavaScriptCore Framework? Если да, могу ли я преодолеть это, используя -stringByEvaluatingJavaScriptFromString:
UIWebView
? Что, если я скомпилирую и включу в свой проект другой Javascript Engine (например, V8)?