0

我在 TableView 上遇到了 reloadData 问题。我终于能够确定我用来告诉 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 上重置?

4

3 回答 3

2

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

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

于 2013-03-04T08:14:47.957 回答
0

您可以使用上述方式在整个应用程序中共享数据。在我之前的一个申请中,我也有同样的要求。在两个三个论坛上,我已经阅读了有关通过应用程序共享数据的信息。但根据他们的说法,这不是在应用程序级别存储数据的好习惯,因为使用应用程序委托作为模型对象是非委托相关的东西。所以更简洁的方法是使用单例类。创建一个单例类以保留所有变量状态。这将是更清洁的方法。

于 2013-03-04T08:48:15.673 回答
0

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

用这个

[[UIApplication sharedApplication] delegate] 获取应用程序委托的现有实例。

于 2013-03-04T08:18:35.633 回答