1

そのため、別のオブジェクトでメソッドを呼び出し、呼び出し元のオブジェクトを呼び出しの一部として渡そうとしています。私が設計している方法は意味をなさないかもしれませんが、とにかく呼び出しは次のとおりです。

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

また、受信メソッドには次の署名があります。

- (void)methodBeingCalled:(id)sender;

これを行うと、呼び出しで「Error expected ':'」というエラーが表示されます。「self」をパラメーターとして渡すコロンが含まれているため、これは意味がありません。

セレクターの使い方が間違っていませんか? 代わりに NSInvocation を使用する必要がありますか?

4

1 に答える 1

4

そのようなパラメータを設定することはできません。セレクターは、シグネチャと、関数が持つ引数の数のみを定義します。selfは送信できませんので削除してください。に合格したい場合はself、 で行いuserInfoます。NSTimerメソッドに含まれるオブジェクトは、NSTimerそれ自体です。

PSドキュメンテーションはあなたの友達です。そこには、(セレクター引数について) 「セレクターは、void を返し、単一の引数を取るメソッドに対応する必要があります。タイマーは、このメソッドに引数として自分自身を渡します」と明確に述べられています。

于 2012-12-04T02:38:22.550 に答える