[英]How do I define a Javascript function with a callback in Obj-C?
我正在使用JavaScriptCore評估我的應用程序中的一些簡單腳本。 我正在創建一個全局對象,並在其上定義一些屬性,如下所示:
JSContext *context = [[JSContext alloc] init];
JSValue *globalObject = [context globalObject];
[globalObject setValue:fields forProperty:@"fields"];
...
因此,腳本可以訪問fields
的值,依此類推。 我希望腳本能夠使用一個名為lookup
的函數,並且我已經有此函數的Objective-C實現。
如何將屬性添加到全局對象,該對象是一個回調我的Objective-C方法的函數? 我看到有一個名為JSObjectMakeFunctionWithCallback
的函數,但是它使用了諸如JSObjectRef
的低級C構造,並且使用了C函數,而不是Objective-C塊,因此我無法在實現內部利用self
。
您可以將Objective-C塊傳遞給JSContext,然后它將充當函數。 這樣,您的腳本可以回調到您的iOS代碼中:
context[@"factorial"] = ^(int x) {
int factorial = 1;
for (; x > 1; x--) {
factorial *= x;
}
return factorial;
};
[context evaluateScript:@"var fiveFactorial = factorial(5);"];
JSValue *fiveFactorial = context[@"fiveFactorial"];
NSLog(@"5! = %@", fiveFactorial);
資料來源: Bignerdranch
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.