如何阻止我的AppDelegate中的NSMutableArray被释放?

时间:2013-08-29 15:21:46

标签: iphone ios objective-c nsmutablearray

在我的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"];没有将对象添加到数组中。

感谢您提供任何帮助!

1 个答案:

答案 0 :(得分:0)

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

你应该拥有一个包含NSMutableArray的模型对象,该模型应该是一个Singleton,以确保你总是访问NSMutableArray的同一个实例。

希望它有所帮助!