在我的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"];
没有将对象添加到数组中。
感谢您提供任何帮助!
答案 0 :(得分:0)
如果您只想从一个类访问delegateValuableItems
,则此属性应仅在该类中。但是,如果您想从整个应用程序访问它,但确保它始终是相同的实例(因为如果您在应用程序委托中声明它,可能是因为您只需要整个应用程序的一个实例) ,那么你应该使用Singleton。
你应该拥有一个包含NSMutableArray的模型对象,该模型应该是一个Singleton,以确保你总是访问NSMutableArray的同一个实例。
希望它有所帮助!