因此,对于我的程序,我使用5个不同的视图,所有视图都需要访问和共享相同的数据。当我第一次开始为iPhone开发时,我发现了一种在appDelegate中创建和存储数据的方法。现在,我有大量的变量,我从那里访问。
现在我的问题是,他们是如何对内存进行管理的呢?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;
然后在.m文件中对它们进行@synthesize
并使用
Agri_ImaGIS_iPhoneAppDelegate *dataCenter = (Agri_ImaGIS_iPhoneAppDelegate *) [[UIApplication sharedApplication] delegate];
在函数中访问它们。现在,如果我不再需要变量,我只需将其设置为零。我应该在appDelegate的dealloc中发布它们吗?除了app终止之外,内存是否会被清除?
答案 0 :(得分:0)
一般规则听起来: 无论何时分配对象,都要在同一个类中释放它。 这些NSNumbers和NSStrings也不例外。 您可以将它们设置为nil,无论您喜欢什么,但仍然必须在dealloc中释放它们。
答案 1 :(得分:0)
尽管在应用程序完成之前不会释放Agri_ImaGIS_iPhoneAppDelegate的单例实例,但最好在任何类的dealloc方法中释放retain属性。在这种情况下,无论如何你都会清理系统,但是你会因为凌乱和乖巧而对你皱眉......