我一直在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上重置?
答案 0 :(得分:2)
你不应该实例化一个app delegate对象 - 你的应用程序在启动时被赋予一个作为UIApplicationMain()
函数的一部分,它应该在你的应用程序的生命周期中存在。使用[[UIApplication sharedApplication] delegate]
获取代理人,即NDSClassAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]
。然后,在需要设置或读取globalid
属性的任何位置,在应用程序委托的此实例上设置它。
实例变量(通常由哪些属性支持)在对象实例之间独立变化,因此您不能将值存储在一个对象中,然后在另一个对象中显示相同的值。
答案 1 :(得分:0)
当你使用它时 NDSClassAppDelegate * detailControllerAD = [[NDSClassAppDelegate alloc] init]; 创建app delegate的新实例。
使用此
[[UIApplication sharedApplication]委托] 获取现有的app delegate实例。
答案 2 :(得分:0)
您可以使用上述方式在整个应用程序中共享数据。我之前的申请中也有同样的要求。在两个论坛上,我已经阅读了关于在应用程序中共享数据的内容。但根据他们的说法,在应用程序级别存储数据并不是一个好的做法,因为使用app delegate作为模型对象是非委托相关的东西。所以更简洁的方法是使用单例类。创建一个单例类以保留所有变量状态。这将是更清洁的方法。