我想在我的代码中使用全局变量。我有一些 ViewController 使用一些实例,所以使用全局会更容易然后在控制器之间传递实例。
因此,我在 AppDelegate 中创建了全局:
AppDelegate.h
@interface AppDelegate : UIResponder <UIApplicationDelegate>{
//Global Variables
NSInteger userID;
NSMutableArray *friends;
}
@property (assign, nonatomic) NSInteger userID;
@property (strong, nonatomic) NSMutableArray *friends;
AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
...
self.friends = [[NSMutableArray alloc] init];
return YES;
}
我在任何控制器中访问全局,在 ViewControllerN.h 中添加此代码:
#import "AppDelegate.h"
#define global \ ((AppDelegate *)[UIApplication sharedApplication].delegate)
所以在 ViewControllerN.m 我可以访问全局,例如:
[global.friends addObject:@"Henry"];
它完美地工作。但是在某个地方,我正在丢失来自全球的数据。
我在 PageControllerA (ControllerA) 中启动我的应用程序
- 控制器 A 有一个带有控制器 B、C 和 D 的滚动视图。
- 我在 ControllerA viewdidLoad 中将数据添加到 global.friend
- 控制器 B、C、D 可以在 viewDidLoad 中正确访问全局,但是当我从任何这个控制器调用方法时,global.friend 是空的。
- 控制器 B 调用控制器 E,但控制器 E 的 global.friend 也是空的。
我只在 global.friend 中的白色数据,从不删除任何对象。
为什么我会丢失数据?(global.friend 为空)