0

在我的 AppDelegate 中,我已将 NSMutableArray 声明为属性:

@property NSMutableArray  *delegateValuableItems;

并在 didFinishLaunchingWithOptions 中分配:

self.delegateValuableItems = [[NSMutableArray alloc] initWithCapacity:3];

我的应用程序中有多个视图控制器,但只有一个可以访问此属性:

[appDelegate.delegateValuableItems addObject:@"a"];

之前将 AppDelegate 定义为视图控制器中的属性:

@property AppDelegate       *appDelegate;

并在 viewDidLoad 中引用它:

appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];

我的问题是,如果应用程序被单独放置几分钟,NSMutableArray 就会被释放。

至少我认为是。

如果我运行应用程序并立即输入所有详细信息,一切正常,但如果我让它运行几分钟[appDelegate.delegateValuableItems addObject:@"a"];,则不会将对象添加到数组中。

谢谢你提供的所有帮助!

4

1 回答 1

2

如果您只想delegateValuableItems从一个类访问,则此属性应仅在该类中。但是,如果您想从整个应用程序访问它,但要确保它始终是同一个实例(因为如果您在应用程序委托中声明它,可能是因为您只需要整个应用程序的一个实例) ,那么你应该使用单例。

您应该有一个包含 NSMutableArray 的模型对象,并且该模型应该是一个 Singleton,以确保您始终访问 NSMutableArray 的同一实例。

希望能帮助到你!

于 2013-08-29T15:37:44.733 回答