В моей AppDelegate я объявил NSMutableArray как свойство:Как я могу остановить NSMutableArray в моем AppDelegate от освобождения?
@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"];
не добавляет объект в массив.
Спасибо за любую помощь, которую вы можете дать!
Возможно, это потому, что iOS засыпает ваше приложение через 10 минут, когда оно было в фоновом режиме. Вы отправляете свое приложение на задний план? И убедитесь, что ваше свойство объявлено как сильное: '@property (nonatomic, strong) NSMutableArray delegateValuableItems' – lucaslt89
При сбое приложения при попытке добавить его? –
По умолчанию в XCode 4.3 свойства стали сильными. Если вы используете более раннюю версию, вам нужно написать: @property (strong) NSMutableArray * delegateValuableItems; –