委托方法被忽略了

时间:2012-04-05 20:43:16

标签: objective-c xcode delegates

我知道有关于此问题的堆栈问题,我已经完成了所有这些问题。

当我调试时,调用委托方法的一行代码似乎被忽略。这是行: [_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
}

1 个答案:

答案 0 :(得分:3)

1)摆脱.h文件开头的id<mapDelegate> delegate;声明。您已将属性绑定到@synthesize语句中名为_delegate的变量,因此另一个变量具有误导性。

2)你说,“这就是我如何设置它”,但我没有看到任何实际上使委托成为某个对象的东西。

3)在普通方法中使用self.delegate而不是_delegate通常是一个更好的主意。