如何在 Objective-C 上编码 JavaScript 行:
setTimeout("function("+argument+")", value);
很清楚你想要什么。我想你想以目标C的方式做到这一点。所以你需要使用NSTimer:
[NSTimer scheduledTimerWithTimeInterval: value
target: self
selector: @selector(function:)
userInfo: argument repeats: YES];
-(void) function:(NSTimer*) timer {
id argument = timer.userInfo;
}
编辑:但是,如果您只想将其用作字符串,请按照丹尼尔所示编写。
首先,使用 javascript 虽然你可以在 "setTimeout" 中使用字符串求值,但它很昂贵,而且可读性要差得多。
改用引用要好得多。请阅读 http://yuiblog.com/blog/2006/11/13/javascript-we-hardly-new-ya/。
让我们按如下方式重写你的 Javascript:
var myFunction = function (arguments) {
alert(arguments);
};
var value = 1000;
var myTimeout = setTimeout(myFunction('Hello World'), value);
上面的结构很好地转化为NSTimer类函数。
+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)seconds invocation:(NSInvocation *)invocation repeats:(BOOL)repeats
首先定义你的函数:
-(void) myFunction {
// do somthing
}
并在一段时间延迟后调用您的函数...
NSTimeInterval value = 1.0;
NSTimer *myTimeout = [NSTimer scheduledTimerWithTimeInterval:value
target:self
selector:@selector(myFunction)
userInfo:nil
repeats:NO];
你有它。延迟 1 秒后的异步函数调用。
您可能会问的参数在哪里?好吧,这是一个需要NSInvocation对象的额外步骤,这在@selector的参数中得到了很好的解释
顺便说一下,问题"如何在objective-C上编码javascript行:"不清楚,我相信你需要一个类似于setTimeout方法Javascript但在Objective-C中
@"setTimeout("function("+argument+")", value);"