在AppDelegate中未调用委托函数

时间:2017-02-16 09:05:42

标签: ios objective-c delegates

我在视图控制器中编写了协议,并在AppDelegate中实现它,当我从视图控制器调用委托函数时,不调用委托函数。以下是我的代码 -

在AuthenticationViewController类中 -

@class AuthenticationViewController;
@protocol ApplicationTiomeoutDelegate <NSObject>

-(void) addObserverForTimeout;

@end

使用委托 -

调用此函数
[self.appTimeoutDelegate addObserverForApplicationTimeout];

在AppDelegate中,我已经实现了这个协议 -

@interface AppDelegate () <ApplicationTiomeoutDelegate>
@end

然后将委托设置为自我 -

AuthenticationViewController *timeoutDelegate = [[AuthenticationViewController alloc] init];
[timeoutDelegate setAppTimeoutDelegate:self]; 

并在AppDelegate中实现了委托功能,从未以某种方式调用 -

-(void) addObserverForApplicationTimeout{
 // this function is never called 
} 

我不确定这里有什么不对。

2 个答案:

答案 0 :(得分:0)

作为 singleton

AppDelegate不需要ApplicationTiomeoutDelegate协议调用。您可以直接调用addObserverForTimeout

答案 1 :(得分:0)

您可以在 appdelegate 中创建方法,您可以使用 appdelegate 的实例直接在任意位置调用它。

对于您的问题,请查看以下内容

为您的委托创建实例的位置以及从 viewcontroller 调用您的委托的位置,它用于在两个类之间进行通信,它应该具有协议的引用。

试试这个

您的 viewcontroller.h

@protocol customDelegate;
#import <UIKit/UIKit.h>
#import "CustomTableViewCell.h"

@interface ViewController : UIViewController<UITableViewDelegate>
{

    IBOutlet UITableView *mainTableView;
}
@property (nonatomic,strong) id <customDelegate> delegate;
@end

@protocol customDelegate <NSObject>

-(void)method;

@end

<强> ViewController.m

- (void)viewDidLoad {
    [self.delegate method];
}

您的应用代表

@interface AppDelegate () <customDelegate>
@end

didfinishlaunghing

viewController = [[ViewController alloc]initWithNibName:@"ViewController" bundle:nil];
    viewController.delegate = self;

并实现方法:

-(void)method{
    NSLog(@"calling");
}