0

私が呼び出していたこのメソッドがあり、すべて問題ありませんでした:

データハンドラ:

.h:    
-(void)saveNumberOfTries:(NSString*)numberOfTries toWord:(NSString *)indexOfWord;
.m:
-(void)saveNumberOfTries:(NSString*)numberOfTries toWord:(NSString *)indexOfWord {...}

ViewController.m

DataHandler *dataHandler = [[DataHandler alloc] init];
[dataHandler performSelector:@selector(saveNumberOfTries:toWord:) withObject:numberOfTries withObject:wordId];

..次に、もう 1 つの引数を取るように更新しました。

データハンドラ:

.h:    
-(void)saveNumberOfTries:(NSString*)numberOfTries toWord:(NSString *)indexOfWord currentLevel:(NSString*)userSelectedLevel;

.m:
-(void)saveNumberOfTries:(NSString*)numberOfTries toWord:(NSString *)indexOfWord currentLevel:(NSString*)userSelectedLevel {...}

ViewController.m:

DataHandler *dataHandler = [[DataHandler alloc] init];

[dataHandler performSelector:@selector(saveNumberOfTries:toWord:currentLevel:) withObject:numberOfTries withObject:wordId withObject:selectedLevel];

しかし、コンパイラは現在、「インスタンスメッセージのレシーバータイプ 'DataHandler' は、セレクター 'performSelector:withObject:withObject:withObject:' を使用してメソッドを宣言していません」と表示しています。

元のメソッド呼び出しを (DataHandler で何も変更せずに) 入れた場合、メソッドはもう存在しませんが、警告は表示されません。Xcode が私の変更に追いついていないようです。アイデアや提案はありますか?

4

1 に答える 1

0

みたいな方法がないからperformSelector:withObject:withObject:withObject:

NSArrayまたはに圧縮してNSDictionaryから使用できますperformSelector:withObject:withObject:

あなたの場合のように-

-(void)saveNumberOfTries:(NSString*)numberOfTries toWordWithCurrentLevel:(NSDictionary *)wordAndLevel;

メソッドの定義を変更したくない場合は、以下のように試してみると問題なく動作します -

[dataHandler saveNumberOfTries:numberOfTries toWord:wordId currentLevel:selectedLevel];
于 2012-05-17T16:55:30.240 に答える