gpt4 book ai didi

ios - 使 AppDelegate 接收来自自定义库的回调事件

转载 作者:行者123 更新时间:2023-12-01 19:00:59 28 4
gpt4 key购买 nike

我正在尝试实现一个库,但该库附带的文档最少,而且我有点超出我的深度。通过查看其他代码,我已经做到了这一点

文档说
AppDelegate 创建一个 JBLayer 的对象作为成员变量

所以我在 AppDelegate.h 中做了这个

#import "JBLayer.h"
//@class JBLayer;
@interface AppDelegate : UIResponder <UIApplicationDelegate>
{
JBLayer *aJBLayer;
}
@property (nonatomic, strong, readonly) JBLayer *aJBLayer;

这在 AppDelegate.m
@implementation AppDelegate
@synthesize aJBLayer = _aJBLayer;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
AppDelegate* appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];

// THIS IS WHERE I'm STUCK
[aJBLayer SetHandler:self.doSetHandler];

// This is what I have to include the lib for, this seems to be ok
[aJBLayer MainCall];

return YES;
}

-(id)doSetHandler
{
return WHAT???;
}

文件说
通过调用 SetHandler 将处理程序设置为接收回调事件。如果 AppDelegate 想要接收回调事件,AppDelegate 需要传递 self。

查看 JBLayer.h 文件,我发现:
-(void)SetHandler:(id<interfaceJBHandler>)aHandler;

我必须实现 interfaceJBHandler.h 中的这些 interfaceJBHandler 方法
@protocol interfaceJBHandler
-(void)OnJBSuccess:(NSString *)aToken;
-(void)OnJBError:(NSError *)aError;
-(void)OnJBResponse :(NSData *)aData :(JBType )aTypeOfData;

据我所知,这就像
[aJBLayer SetHandler:];

但是我尝试过的一切都会出错
[aJBLayer SetHandler:self];
[aJBLayer SetHandler:appDelegate];

这编译
[aJBLayer SetHandler:self.doSetHandler];

但是我错过了一些东西,我必须在某个地方做一个委托(delegate),但到目前为止,我只做了委托(delegate)来在 View Controller 之间传递消息。

如何让 AppDelegate 接收回调事件?

最佳答案

您需要传递一个实现 interfaceJBHandler 的对象协议(protocol)。如果您希望您的 appDelegate 成为对象,请在头文件中更改以下内容以使您的应用委托(delegate)符合协议(protocol):

@interface AppDelegate : UIResponder <UIApplicationDelegate, interfaceJBHandler>

将委托(delegate)设置为您的处理程序:
[aJBLayer SetHandler:self];

并在您的应用委托(delegate)的实现文件中实现 3 个必需的方法:
-(void)OnJBSuccess:(NSString *)aToken{
//Do Something
}

-(void)OnJBError:(NSError *)aError{
//Do Something
}

-(void)OnJBResponse :(NSData *)aData :(JBType )aTypeOfData{
//Do Something
}

关于ios - 使 AppDelegate 接收来自自定义库的回调事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22977614/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com