gpt4 book ai didi

ios - 没有已知的选择器实例方法——委托(delegate)问题?

转载 作者:行者123 更新时间:2023-11-28 19:03:52 25 4
gpt4 key购买 nike

我收到上面的错误,我不知道为什么。标记错误的行是:

- (IBAction)cancelButton:(UIBarButtonItem *)sender
{
[self.delegate addActivityViewControllerDidCancel:self.thisActivity];
}

我很困惑,因为这个方法似乎没有问题,紧接着:

- (IBAction)saveButton:(UIBarButtonItem *)sender
...
[self.delegate addViewControllerDidSave];
}
...
}

我的协议(protocol)在关联的头文件中是这样声明的:

@protocol AddActivityViewControllerDelegate <NSObject>

-(void) addViewControllerDidSave;

-(void) addViewControllerDidCancel:(WMDGActivity *) activityToDelete;

@end

这些方法在委托(delegate)对象中是这样实现的:

-(void) addActivityViewControllerDidSave
{
NSManagedObjectContext *localContext = [NSManagedObjectContext MR_contextForCurrentThread];
[localContext MR_saveToPersistentStoreAndWait];
[self.navigationController dismissViewControllerAnimated:YES completion:nil];
[self refreshData];

}

-(void) addActivityViewControllerDidCancel:(WMDGActivity *) activityToDelete
{
[activityToDelete MR_deleteEntity];
[self.navigationController dismissViewControllerAnimated:YES completion:nil];
[self refreshData];

}

有人可以指出我的错误吗?

编辑:

确实存在命名问题(我是从测试应用粘贴进来的)。但是,我相信我已经更正了它,就像这样:

@protocol AddActivityViewControllerDelegate <NSObject>

-(void) AddActivityViewControllerDidSave;

-(void) AddActivityViewControllerDidCancel:(WMDGActivity *) activityToDelete;

@end

- (IBAction)saveButton:(UIBarButtonItem *)sender

{
...
[self.delegate AddActivityViewControllerDidSave];
...
}

- (IBAction)cancelButton:(UIBarButtonItem *)sender
{
[self.delegate addActivityViewControllerDidCancel:self.thisActivity];
}

-(void) addActivityViewControllerDidSave
{
NSManagedObjectContext *localContext = [NSManagedObjectContext MR_contextForCurrentThread];
[localContext MR_saveToPersistentStoreAndWait];
[self.navigationController dismissViewControllerAnimated:YES completion:nil];
[self refreshData];

}

-(void) addActivityViewControllerDidCancel:(WMDGActivity *) activityToDelete
{
[activityToDelete MR_deleteEntity];
[self.navigationController dismissViewControllerAnimated:YES completion:nil];
[self refreshData];

}

仍然出错。

即使使用@Leo 建议的断点构建也会失败

最佳答案

您的代码有几个问题:

  • 您的协议(protocol)定义的方法名称中没有单词 Activity,但您的实现定义的方法名称中包含单词 Activity,因此这些方法名称不匹配。您可以依靠完成或复制粘贴来实现协议(protocol)方法并确保方法签名匹配。
  • self.delegate可以简单地输入 id ,不符合特定协议(protocol)。编译器无法知道 self.delegate可以响应您的协议(protocol)方法。将该行更改为:

    [(id<AddActivityViewControllerDelegate>)self.delegate addActivityViewControllerDidCancel:self.thisActivity];

关于ios - 没有已知的选择器实例方法——委托(delegate)问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22237649/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com