在objective-c中重新加载数据后,变量被重置为null



我一直有问题的reloadData上的TableView。我终于能够建立我用来告诉reloadData加载什么的变量重置为NULL。

我在ClassAppDelegate.h中添加了如下变量:

@property (nonatomic, retain) id globalid;

,然后在ClassAppDelegate.m中合成如下:

@synthesize globalid;

然后访问我需要使用它的任何类和方法中的变量:

NDSClassAppDelegate *detailControllerAD = [[NDSClassAppDelegate alloc] init];

然后以这种方式使用它来获得该方法中的变量:

NSLog(@"GlobalID at FetchTweets %@", detailControllerAD.globalid);

为什么我的变量在reloadData上重置?

你不应该实例化一个应用程序委托对象——你的应用程序在启动时作为UIApplicationMain()函数的一部分被赋予一个,它应该在你的应用程序的生命周期中存在。使用[[UIApplication sharedApplication] delegate]获取委托,即NDSClassAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]。然后,在任何需要设置或读取globalid属性的地方,在应用程序委托的这个实例上设置它。

实例变量(属性通常由其支持)在对象的实例之间独立变化,因此您不能在一个对象中存储值,然后在另一个对象中出现相同的值。

当你使用这个NDSClassAppDelegate *detailControllerAD = [[NDSClassAppDelegate alloc] init];创建app委托的新实例。

使用这个

[[uiapplicationsharedapplication] delegate]获取app委托的现有实例

您可以使用上述方法在整个应用程序中共享数据。我在之前的申请中也有同样的要求。在两三个论坛上,我读到关于共享数据通过应用程序。但根据他们的说法,在应用程序级别存储数据不是一个好做法因为使用app委托作为模型对象是与委托无关的东西。因此,更简洁的方法是使用单例类。创建一个单例类来保存所有变量的状态。

最新更新