0

我有我正在调用的这个方法,一切都很好:

数据处理器:

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

视图控制器.m

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

..然后我对其进行了更新以再提出一个论点:

数据处理器:

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

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

视图控制器.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:

您可以压缩成NSArrayorNSDictionary然后使用performSelector:withObject:withObject:

就像你的情况一样-

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

其他方式,如果您不想更改方法的定义,您可以尝试如下所示,它会正常工作 -

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