0

重複の可能性:
@selectorの引数

セレクターに3つ以上のパラメーターを持つパラメーター化されたメソッドを呼び出す方法、たとえばEXの場合、次のようなメソッドがあります

-(void)GetTheData:(NSString *)str1 :(NSString *)str2

@selector内の次のタイマーでこのメソッドを呼び出す必要があります。どうすれば呼び出すことができますか?

NSTimer  *timer = [NSTimer scheduledTimerWithTimeInterval:0.0 target:self selector:@selector(**HowCanICallHere**) userInfo:nil repeats:YES];
4

4 に答える 4

2

NSDictionaryパラメータとしてターゲット メソッドに渡す

 NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"1",@"parameter1",@"2",@"parameter2", nil];

        [ NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(myFunction:) userInfo: dictionary repeats:NO];

ターゲット関数のパラメーターをさらに取得する

-(void)myFunction:(NSTimer *)timer{
    NSLog(@" dict : %@",timer.userInfo);
}

このようにして、複数のパラメーターを渡すことができます。NSDictionary

于 2012-12-04T13:07:49.923 に答える
2

できるかどうかわかりません。同じ理由で、複数のパラメータを渡すために「userInfo」オプションが与えられています。2 つのオブジェクトを持つ辞書を作成することで、簡単に実装できます。

NSDictionary *dict = [NSDictionary dictionaryWithObjects:objArray andKeys:keyArray];

その辞書を userInfo オブジェクトとしてメソッドに渡します。

NSTimer  *timer = [NSTimer scheduledTimerWithTimeInterval:0.0 target:self selector:@selector(urTimerMethod:) userInfo:dict repeats:YES];

メソッドを次のように定義します。

- (void)urTimerMethod:(NSTimer *)timer {
        NSDictionary *dict = [timer userInfo];
}
于 2012-12-04T13:13:06.293 に答える
0

これを使用できます:

NSTimer *timer = [NSTimerscheduledTimerWithTimeInterval:0.0 target:self selector:@selector(GetTheData::) userInfo:nil repeats:YES];

于 2012-12-04T12:46:43.187 に答える
0

私は perform-selector でそれを使用する方法を知っているので、おそらく次の方法でそれを行うことができます:

-(void)GetTheData1:(NSString *)str1 GetTheData2:(NSString *)str2

NSTimer  *timer = [NSTimer scheduledTimerWithTimeInterval:0.0 target:self selector:@selector(mymethod) userInfo:nil repeats:YES];

- (void) mymethod {
[self performSelector:@selector(GetTheData1:GetTheData2:) withObject:str1 withObject:str2];

}
于 2012-12-04T13:13:00.800 に答える