1

このコードのperformSelectorメソッドに問題があります。

このメソッドは、「JSONMethods」と呼ばれる他のクラスにあります。

+(void)sendPostMsgWithMultipleArguments:(NSArray *)myArgs {
[self sendPostMsg:[myArgs objectAtIndex:0]:[myArgs objectAtIndex:1]];
}

次に、別のクラスで私は呼び出しを持っています:

- (void)viewDidLoad
{
[super viewDidLoad];
self.title = @"Loading...";

JSONMethods *methods = [[JSONMethods alloc]init];
NSArray *arguments = [[NSMutableArray alloc]initWithObjects:@"http://localhost/promos/txFirmas.php",[NSString stringWithFormat:@"sensor=%d",tableViewNumber], nil];
[methods performSelector:@selector(sendPostMsgWithMultipleArguments:)
           withObject:arguments
           afterDelay:3.0];

NSString *tit = [NSString stringWithFormat:@"Sign: %d",tableViewNumber];
self.title = tit;
}

「sendPostMsgWithMultipleArguments:」が終了してタイトルを変更するまで待ちたいのですが、どうすればよいですか?これをテストすると、miアプリがクラッシュし、コンソールで表示されます。

2012-08-17 12:09:15.966 MapaProject[524:11603] -[JSONMethods sendPostMsgWithMultipleArguments:]: unrecognized selector sent to instance 0x7c85b70
2012-08-17 12:09:15.968 MapaProject[524:11603] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[JSONMethods sendPostMsgWithMultipleArguments:]: unrecognized selector sent to instance 0x7c85b70'
*** First throw call stack:
(0x133a022 0x2016cd6 0x133bcbd 0x12a0ed0 0x12a0cb2 0xa1c85d 0x130e936 0x130e3d7 0x1271790 0x1270d84 0x1270c9b 0x15db7d8 0x15db88a 0xf6626 0x236d 0x20c5)
terminate called throwing an exception

手伝って頂けますか?前もって感謝します :)

4

3 に答える 3

1

変化する+(void)sendPostMsgWithMultipleArguments:(NSArray *)myArgs

-(void)sendPostMsgWithMultipleArguments:(NSArray *)myArgs

またはさらに良い変更

[methods performSelector:@selector(sendPostMsgWithMultipleArguments:) withObject:arguments afterDelay:3.0];

[[methods class] performSelector:@selector(sendPostMsgWithMultipleArguments:) withObject:arguments afterDelay:3.0];

于 2012-08-17T10:37:19.413 に答える
0

NSArray * mutArray = [NSArray arrayWithObjects:[NSNumber numberWithInt:0]、[NSNumber numberWithInt:2]、nil]

[自己performSelector:@selector(loadMore :) withObject:mutArray afterDelay:1.9];

-(void)loadMore:(NSArray *)array
{
 NSNumber * myNumber = [array objectAtIndex:0];
 NSNumber * myNumber2 = [array objectAtIndex:1];

}

于 2014-06-04T14:04:12.897 に答える
0

迅速な3で

辞書を作成して複数の引数を保存し、セレクターで渡すことができます

let argumentsDict = ["arg1Key": arg1Value, "arg2Key": arg2Value] as [String : Any]

perform(#selector(selectorWithMultipleArg), with: argumentsDict, afterDelay: 3.0)

そして、セレクター関数内で、guardを使用して値を取り出して使用します。私は2つの異なる型引数を使用して、より適切に説明しています。つまり、IntとString

func selectorWithMultipleArg(_ arguments: [String: Any]) {

    guard let arg1Value = arguments["arg1Key"] as? Int else {
        fatalError("Invalid value 1")
    }

    guard let arg2Value = arguments["arg2Key"] as? String else {
        fatalError("Invalid value 2")
    }
    print("Value 1: \(arg1Value)")
    print("Value 2: \(arg2Value)")

}

これがお役に立てば幸いです

于 2017-05-12T05:51:27.060 に答える