gpt4 book ai didi

objective-c - SharedApplication 值不可见

转载 作者:行者123 更新时间:2023-11-29 04:27:07 24 4
gpt4 key购买 nike

嗯,我有这两个变量,一个 NSString 和一个 NSMutable 数组,我希望在所有选项卡中将其值设为全局值。到目前为止我只有一个(NSString)并且我可以正常获取它的值。不,我尝试再添加一个变量,但我得到了(空)值。

这是我的代码:

AppDelegate.h

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;
@property (nonatomic,retain) NSString *myDate;
@property (nonatomic,copy) NSMutableArray *tracks_condition;

@end

当我分配值时在 HomeView.m 中

AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
parsed_date=[res objectForKey:@"date"];
NSLog(@"Date:%@",parsed_date);
delegate.myDate = parsed_date;
NSString *parsed_track=[res objectForKey:@"Data1"];
[delegate.tracks_condition addObject:parsed_track];
NSLog(@"Track 0 Static:%@",parsed_track);
NSLog(@"Track 0:%@",[delegate.tracks_condition objectAtIndex:0]);

parsed_date 正在正常打印,我可以在其他选项卡中访问它。

但我得到:轨道 0 静态:0轨道 0:(空)

我无法理解为什么,因为我将它作为对象添加到 MutableArray 中。当然,我在所有其他选项卡中都得到 (null)。

你能帮我吗?我更喜欢修复该代码,而不是提出完全不同的建议,因为我在 IOS 方面经验不足。除非事情那么简单。

最佳答案

这很可能是因为您从未为 tracks_condition 属性实例化可变数组。仅在 AppDelegate 类上声明属性并不会为您创建对象。您仍然需要在某个时候分配/初始化该对象,然后才能使用它。在此之前,tracks_condition 保持为 null,并且发送给它的任何消息(例如尝试将对象添加到数组中)都将被忽略。

您可以通过实例化一个对象并在使用它之前设置属性的值来解决此问题。您可以在应用程序委托(delegate)的 application:didFinishLaunchingWithOptions:

中执行此操作
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.tracks_condition = [[NSMutableArray alloc] init];
}

关于objective-c - SharedApplication 值不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12168534/

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