You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:38:30