我知道有关于此问题的堆栈问题,我已经完成了所有这些问题。
当我调试时,调用委托方法的一行代码似乎被忽略。这是行:
[_delegate insertDataLocation:dbLocation Time:dbTime Reminder:dbReminder];
我假设这是委托人没有正确设置的问题,所以这就是我如何设置它: ViewController.h
@protocol mapDelegate;
@interface ViewController : UIViewController
@property (strong, nonatomic) id<mapDelegate> delegate;
ViewController.m
@synthesize delegate = _delegate;
- (void)viewDidLoad
{
[super viewDidLoad];
[self setDelegate:_delegate];
}
//Here's where I call the method, FYI
[_delegate insertDataLocation:dbLocation Time:dbTime Reminder:dbReminder];
AppDelegate.h
@protocol mapDelegate
-(void)insertDataLocation:(NSString*)l Time:(NSString*)t Reminder:(NSString*)r;
@end
@interface AppDelegate : UIResponder <UIApplicationDelegate, mapDelegate>
AppDelegate.m
-(void)insertDataLocation:(NSString*)l Time:(NSString*)t Reminder:(NSString*)r {
//Here's my method's code
}
答案 0 :(得分:3)
1)摆脱.h文件开头的id<mapDelegate> delegate;
声明。您已将属性绑定到@synthesize语句中名为_delegate的变量,因此另一个变量具有误导性。
2)你说,“这就是我如何设置它”,但我没有看到任何实际上使委托成为某个对象的东西。
3)在普通方法中使用self.delegate
而不是_delegate
通常是一个更好的主意。