【发布时间】:2014-03-06 22:36:30
【问题描述】:
我收到上述错误,我不知道为什么。标记错误的行是:
- (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 建议的断点,构建也会失败
【问题讨论】:
-
@bneely 回复您的答案。这是正确的。里奥错了。
-
这看起来像是
self.delegate类型为id而不符合相关协议的问题。 -
请参阅上面的编辑。
-
@LeoNatan
id是一种类型。它位于 iOS 7.0.4 SDK 第 46 行的 objc.h 中。 -
@LeoNatan 如果您知道答案,请发布答案。谢谢。