setTimeout ("function (" + 参数 +")", value) on Objective-C



如何在 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);"

最新更新