gpt4 book ai didi

ios - ViewController() 比 appDelegate() 先被调用?

转载 作者:行者123 更新时间:2023-11-29 11:01:46 26 4
gpt4 key购买 nike

在我的应用程序中,在 appDelegate 文件中,我注册了毛皮推送通知获取 token 并获取设备 UDID。我将这些变量保存为全局变量。

接下来我要做的是在我的 viewController 中使用这两个变量连接到 URL。

但是,当我从我的 viewController 调用变量时,它们是 (null)。

所以我想也许我对他们做错了什么。但是,即使我在 appdelegate() 和 viewcontroller() 上记录某些内容,它也会首先从 viewcontroller 记录...

这怎么可能,因为我的新功能是 appdelegate 首先运行,其次我将如何在 viewcontroller 中使用我在 appdelegate 上获得的 token 和 udid 变量?

我的代码是这样的:

@interface 之前的 appdelegate.h 中:

extern NSString *newDeviceToken;
extern NSString *udid;

@implementation 之前的 appdelegate.m 中:

NSString *newDeviceToken;
NSString *udid;

在我的 View Controller 中,我只需导入委托(delegate):

#import "AppDelegate.h"

最佳答案

委托(delegate)方法:

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken

您应该获取变量的位置是异步运行的。是的,它可能会在您的 RootViewController 初始化后被调用。

您不应该在您的 ViewController 上执行 URL 连接,因为您可能还没有访问 token 。您应该在它自己的委托(delegate)方法上执行此操作。

现在,如果你想使用你的 ViewController 的一个功能并且不想在 AppDelegate 中进行服务器通信,请在你的 AppDelegate 中获取对你的 ViewController 的引用,将你的 ViewController 上的 URL 函数公开,然后调用它.

至于获取对您的 ViewController 的引用,如果不了解您应用的设计,这将很难回答。

假设您的 App 的 RootViewController 是一个 NavigationController,假设 NavigationController RootViewController 被命名为 HomeNewViewController,这就是您从 App Delegate 获取指向它的指针引用的方式:

NavigationController *navigationController = (NavigationController*) [self.window rootViewController];

HomeNewViewController *homeController = (HomeNewViewController*)[navigationController.viewControllers objectAtIndex:0];

然后假设在 HomeNewViewController 中,您有一个名为 uploadToken 的函数。

然后你可以这样做:[homeController uploadToken];

并上传。

关于ios - ViewController() 比 appDelegate() 先被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15612689/

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