как освободить переменные appDelegate - PullRequest
0 голосов
/ 05 октября 2011

Итак, для моей программы я использую 5 разных представлений, которые все должны иметь доступ и использовать одни и те же данные. Когда я впервые начал разрабатывать для iPhone, я нашел способ создавать и хранить данные в приложении Delegate. Теперь у меня есть большое количество переменных, к которым я получаю доступ.

Мой вопрос сейчас, как управление ими?

appDelegate.h

@property (nonatomic, retain) NSString *analysisModeForSave;
@property (nonatomic, retain) NSString *pdfPath;
@property (nonatomic, retain) NSString *state;
@property (nonatomic, retain) NSNumber *userLevel;
@property (nonatomic, retain) NSNumber *currentHiliteID;

затем @synthesize их в файле .m

и используйте

Agri_ImaGIS_iPhoneAppDelegate *dataCenter = (Agri_ImaGIS_iPhoneAppDelegate *) [[UIApplication sharedApplication] delegate];

для доступа ко всем из них в функции. Прямо сейчас, если мне больше не нужна переменная, я просто устанавливаю ее на ноль. я должен выпустить их в dealloc appDelegate? очищается ли память когда-нибудь, кроме завершения приложения?

Ответы [ 2 ]

0 голосов
/ 05 октября 2011

Хотя верно, что одноэлементный экземпляр Agri_ImaGIS_iPhoneAppDelegate не будет освобожден до тех пор, пока приложение не завершит работу, но рекомендуется освободить свойства сохранения в методе dealloc любого класса. В любом случае, система в любом случае вычистит вас, но будет недовольна тем, что вы грязны и плохо себя ведете ...

0 голосов
/ 05 октября 2011

Общее правило звучит так: всякий раз, когда вы выделяете объект, вы освобождаете его в том же классе.Эти NSNumbers и NSStrings ничем не отличаются.Вы можете установить их равными нулю там, где вам нравится, но вам все равно придется выпустить их в сделку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...