Objective-C iOS:如何从ViewController向AppDelegate的数组添加对象?
解决Objective-C中从UIViewController向AppDelegate数组添加对象的问题
嘿,我来帮你搞定这个问题!你已经在AppDelegate里搭好了共享数组的基础框架,接下来我一步步带你完成ViewController里的操作,确保能顺利往数组里加对象~
第一步:确认AppDelegate的配置(小优化)
你已经在AppDelegate.h里声明了数组属性,在AppDelegate.m里合成并初始化了,这里给个小建议:如果你的项目用的是ARC(自动引用计数,现在大部分项目都是),把retain换成strong会更规范:
// AppDelegate.h @property (nonatomic, strong) NSMutableArray *sharedArray;
要是还在使用MRC(手动引用计数),保留retain就行,但别忘了在dealloc里释放数组,避免内存泄漏:
// AppDelegate.m - (void)dealloc { [_sharedArray release]; [super dealloc]; }
第二步:在ViewController里操作共享数组
接下来就是关键的ViewController部分,你需要先拿到AppDelegate的全局实例,才能访问它的sharedArray,完整步骤如下:
1. 导入AppDelegate头文件
在你的ViewController的.m文件顶部,先导入AppDelegate的头文件:
#import "AppDelegate.h"
2. 获取实例并添加对象
在你需要添加对象的方法里(比如按钮点击事件、viewDidLoad方法里),写这段代码:
// 获取AppDelegate的全局实例 AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; // 往共享数组里加对象,这里用NSString举例子,你可以换成任何你需要的对象 [appDelegate.sharedArray addObject:@"我是新加的测试对象"]; // 可以打印一下,看看数组里的内容是否正确 NSLog(@"当前共享数组内容:%@", appDelegate.sharedArray);
几个要注意的点
- 一定要确保
sharedArray在didFinishLaunchingWithOptions里被正确初始化了,不然数组是nil的话,添加对象的操作会无效:// AppDelegate.m - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.sharedArray = [[NSMutableArray alloc] init]; // 其他项目初始化代码 return YES; } - 虽然用AppDelegate存共享数据是可行的,但如果项目比较复杂,更推荐用单例类或者通知中心来管理共享数据,这样代码耦合度更低,后期维护起来更方便哦~
内容的提问来源于stack exchange,提问作者iOS Developer
相关产品推荐
相关产品推荐

