gpt4 book ai didi

iphone - AppDelegate 属性在 viewController 之间被重置

转载 作者:行者123 更新时间:2023-11-29 13:49:48 27 4
gpt4 key购买 nike

我正在尝试在各种 viewController 之间共享数据,我正在使用在 appDelegate 中声明的属性。我在我的第一个 viewController 中设置了该属性,当我打印出内容时,一切看起来都很好,但是在我调用自定义类方法之后,该属性被设置为某个随机值,该值似乎在我每次运行该应用程序时都会发生变化。见下面的代码:

应用委托(delegate).h

NSDate *lastUpdated;

@property (nonatomic, retain) NSDate *lastUpdated;

View Controller .m

AppDelegateClassName *appDelegate = (AppDelegateClassName *)[[UIApplication sharedApplication] delegate];
[appDelegate setLastUpdated:[NSDate date]];

设置属性后,我调用以下自定义类方法并将对 viewController 的引用作为参数:

View Controller .m

ForceData *forceData = [[ForceData alloc] init];
[forceData queryServiceWithParent:self];

如果我尝试在自定义类中显示 appDelegate 属性的内容,它会返回一个随机值。一旦自定义类返回到 viewController,appDelegate 属性将保持为随机值。

我看不出出了什么问题。谁能帮忙?

谢谢。

更新

这是 queryServiceWithParent 方法中的代码:

- (void)queryServiceWithParent:(UIViewController *)controller {

viewController = (ForcesTableViewController *)controller;
responseData = [[NSMutableData data] retain];

NSString *url = [NSString stringWithFormat:@"http://example.com"];
theURL = [[NSURL URLWithString:url] retain];
NSURLRequest *request = [NSURLRequest requestWithURL:theURL];
[[NSURLConnection alloc] initWithRequest:request delegate:self];

}

我仍然遇到这个问题,非常感谢任何帮助。

更新:

我花了更多时间研究这个,我可以在 queryServiceWithParent(就在上面)中的任何地方显示 lastUpdated 的内容,并且显示正常。但是如果我在 connectionDidFinishLoading 中显示相同的属性,它就会被重置。非常坚持这个!

最佳答案

在我看来,这听起来是您的 NSDate 属性在某个时候自动释放,即使您的内存管理听起来像您描述的那样很好。

您可以尝试向您的 NSDate 添加额外的保留,如:

appDelegate.lastUpdated = [[NSDate date] retain]

如果这对您有帮助,我们需要更多关于您的代码的信息,以找出您的内存管理存在错误的地方。即您的 appDelegate 和 viewController 的完整头文件和主文件。

关于iphone - AppDelegate 属性在 viewController 之间被重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5372349/

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