没有针对选择性问题的已知实例方法



我会遇到上述错误,我不知道为什么。标记错误的行是:

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

我很困惑,因为这种方法似乎没有问题,在之前:

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

我的协议在关联的标题文件中被声明:

@protocol AddActivityViewControllerDelegate <NSObject>
-(void) addViewControllerDidSave;
-(void) addViewControllerDidCancel:(WMDGActivity *) activityToDelete;
@end

,这些方法是在代表对象中像这样实现的:

-(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建议的断点

中也失败

您的代码有几个问题:

  • 您的协议定义了没有单词活动的方法名称,但是您的实现将方法名称定义为使用 Activity activity 的方法名称,因此这些方法名称不匹配。您可以依靠完成或复制 - 实现协议方法并确保方法签名匹配。
  • self.delegate可能只是类型id,它不符合特定协议。编译器无法知道self.delegate可以响应您的协议方法。将该行更改为:

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

最新更新