我正在使用 Objective-C 开发 iPhone 应用程序。我想访问另一个类中 RootViewController 类的 NSMutableArray 类型的数据成员。我尝试使数组静态化。但我想要一个非静态数组。我如何实现这一点?
最佳答案
你需要两件事:
- 对
RootViewController
的引用 - 一种从
RootViewController
中获取变量的方法。
在每个应用程序(很可能)有一个 RootViewController
的情况下,在应用程序的委托(delegate)中保留对该对象的引用是有意义的。您可以像这样获取应用委托(delegate):
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
在您的应用程序委托(delegate)类中,您应该添加一个名为 rootViewController
的属性,该属性公开您的 RootViewController
对象。现在你可以这样写了
RootViewController *theRootViewController = appDelegate.rootViewController;
这满足了第一个要求。现在,为了访问 View Controller 拥有的对象,您需要向 RootViewController
添加一个属性。您并没有真正说明对象是什么或做什么,所以我们就称它为 myMutableArray
。在 RootViewController
上创建一个具有该名称的 readonly
属性,现在您将能够编写如下内容:
NSMutableArray *myArray = theRootViewController.myMutableArray;
这会让你做你想做的事。
不过,我必须警告你:公开一个 NSMutableArray
通常不是一个好主意。原因是,如果您更改了该数组的内容,RootViewController
将不知道您已完成此操作。因此,如果您要创建一个主从 View ,您的 RootViewController
将不知道您添加了一个新对象。
如果您编写让 RootViewController
在内部修改数组的方法会更好。例如,您可以使用名为 addFooObject:
的方法来管理数组。然后 View Controller 就会知道你对它做了什么。对于访问,您可以非常轻松地从您的属性中返回可变数组的不可变、自动释放的副本。
关于objective-c - 访问另一个类中 RootViewController 的数据成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/696360/