正确定义从AppDelegate调用函数的委托



我有一个.h文件

@protocol SMMessageDelegate
- (void)newMessageReceived:(NSDictionary *)messageContent;
@end

在我的AppDelegate.h 中

@interface AppDelegate : UIResponder <UIApplicationDelegate>
{
    __weak NSObject <SMMessageDelegate> *messageDelegate;
}
@property (nonatomic, assign) id  _messageDelegate;

在AppDelegate.m中,我正在呼叫

[messageDelegate newMessageReceived:m];

在某个地方。

在我的ViewController 中

    #import "SMMessageDelegate.h"
    @interface ChatController : UIViewController <SMMessageDelegate>
    ChatController.m
    -(void) viewDidLoad  
   {
      AppDelegate *delegate =  (AppDelegate *) [[UIApplication sharedApplication] delegate];
        delegate._messageDelegate = self;
   }
    - (void)newMessageReceived:(NSDictionary *)messageContent
    {
    }

然而,当我的代码转移到AppDelegate 时

[messageDelegate newMessageReceived:m];

它从不调用上面的ViewController委托函数。正确定义一个代表我哪里错了?

替换此:

@interface AppDelegate : UIResponder <UIApplicationDelegate>
{
    __weak NSObject <SMMessageDelegate> *messageDelegate;
}
@property (nonatomic, assign) id  _messageDelegate;

带有:

@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (nonatomic, assign) id<SMMessageDelegate>  _messageDelegate;

最新更新