gpt4 book ai didi

iOS 传递数据、单例、外部或通过协议(protocol)?

转载 作者:行者123 更新时间:2023-11-29 11:00:15 25 4
gpt4 key购买 nike

大家好,我真的对在我的 iOS 应用程序中传递数据感到困惑。

首先,我有一个类,其中包含 TabBarController 和另外两个 ViewController。它是一个包含每日和每周日历 View 的容器 View 。

我想将下载的数据存储在带有日期的 NSDictionary 中,这样日历就不必随时重新加载数据(仅当用户强制刷新时)。

那么,我应该将这些数据存储在容器 View 的“extern NSDictionary”中吗?或者我应该创建一个 SingletonClass 并将字典存储在那里吗?但是容器 View 释放后,SingletonClass 会被释放吗?

或者我应该将 NSDictionary 存储在容器 View 中,然后通过协议(protocol)使用方法来访问 Dic?但是如何呢?

我检查了很多教程和示例,但我仍然不知道如何正确操作。谢谢

最佳答案

您可以将它存储在 tabBarController 中并在 tabBar viewController 实例中访问它,但我认为您最好将它存储在 NSUserDefaults 中..这样您就可以轻松地从应用程序的任何地方获取它无需获取 tabBar 实例。

我个人建议像这样创建一个实现 NSUserDefaults 的 Singleton 类(尽管如果您愿意,您可以直接写入和读取它):

//DefaultsSingleton.h
@interface DefaultsSingleton : NSObject
{
}

+(DefaultsSingleton*) sharedDefaultsSingleton;
@property(atomic,assign)NSDictionary *yourDictionary;

//DefaultsSingleton.m
@implementation DefaultsSingleton

SYNTHESIZE_SINGLETON_FOR_CLASS(DefaultsSingleton)

-(NSDictionary *) yourDictionary
{
return[ [NSUserDefaults standardUserDefaults] dictionaryForKey:@"your_dictionary"];
}

-(void) setYourDictionary:(NSDictionary *)yourDictionary
{
[[NSUserDefaults standardUserDefaults] setValuesForKeysWithDictionary:yourDictionary];
}

然后只需将这个单例文件导入到任何你想访问它的地方,你就可以用它的值初始化新的字典并创建可变副本,然后在你想要的任何地方覆盖保存的值。哦,您还应该导入 Matt Gallagher 很棒的 SynthesizeSingleton 类。 http://www.cocoawithlove.com/2008/11/singletons-appdelegates-and-top-level.html

关于iOS 传递数据、单例、外部或通过协议(protocol)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16234866/

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