1

所以,我试图在另一个对象中调用一个方法,并将调用对象作为调用的一部分传递。可能是我构建它的方式没有意义,但无论如何这是电话:

NSTimer *refreshTimer = [NSTimer
                         scheduledTimerWithTimeInterval:[timerDate timeIntervalSinceNow]
                         target:otherObject
                         selector:@selector(methodBeingCalled:self)
                         userInfo:nil
                         repeats:NO];

并且接收方法具有以下签名:

- (void)methodBeingCalled:(id)sender;

当我这样做时,我在调用时收到一个错误,上面写着“错误预期':'”。这对我来说没有意义,因为我有一个冒号来传递“self”作为参数。

我是否错误地使用了选择器?我应该改用 NSInvocation 吗?

4

1 回答 1

4

你不能这样设置参数。选择器只定义签名和函数有多少参数。删除self,因为您无法发送。如果你想通过self,那就去做吧userInfoNSTimer方法中的对象就是NSTimer它本身。

PS文档是您的朋友。它清楚地说明(对于选择器参数)“选择器必须对应于返回 void 并采用单个参数的方法。计时器将自身作为参数传递给该方法。”

于 2012-12-04T02:38:22.550 回答