获得NSTimer目标的返回值

mac*_*osh 1 cocoa return objective-c nstimer

我有一个NSTimer,设置如下:

[NSTimer scheduledTimerWithTimeInterval:0.5 target:timerTarget selector:NSSelectorFromString(targetSelector) userInfo:nil repeats:YES];
Run Code Online (Sandbox Code Playgroud)

如何获取方法的返回值timerTarget

Ada*_*eld 5

你对返回值做了什么?目标在0.5秒后异步运行.scheduledTimerWithTimeInterval:target:selector:useInfo:repeats:即时返回的调用,此时目标尚未运行.如果你现在真的需要返回值,那么不要打扰定时器,只需正常调用选择器.


Pet*_*sey 5

你不能,因为没有回报价值.

说明scheduledTimerWithTimeInterval:::::方法文档:

选择器必须具有以下签名:

- (void)timerFireMethod:(NSTimer*)theTimer
Run Code Online (Sandbox Code Playgroud)

现在,您可以以不同方式声明您的方法,然后在其中返回一个值,但是您的方法具有与NSTimer期望的不同的签名.这个现在可以正常工作,但不能保证在将来工作 - 它可能随时中断,尤其是运行时的变化.

更重要的是,由于NSTimer并不期望返回值,因此它没有规定接收一个并在任何地方传递它.

而且,正如我在评论亚当的答案时所说,你的召唤scheduledTimerWithTimeInterval:::::只返回一次,并且(正如亚当所说)立即这样做.你没有每0.5秒获得一个返回值,因为你没有每0.5秒获得一次返回 - 你得到一次返回(每个计时器).

无论您在计时器方法中发现什么信息,您都需要在那里采取行动,或者将信息从那里发送到另一种方法.