如何发布appDelegate变量

时间:2011-10-05 15:17:47

标签: objective-c memory-management

因此,对于我的程序,我使用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终止之外,内存是否会被清除?

2 个答案:

答案 0 :(得分:0)

一般规则听起来: 无论何时分配对象,都要在同一个类中释放它。 这些NSNumbers和NSStrings也不例外。 您可以将它们设置为nil,无论您喜欢什么,但仍然必须在dealloc中释放它们。

答案 1 :(得分:0)

尽管在应用程序完成之前不会释放Agri_ImaGIS_iPhoneAppDelegate的单例实例,但最好在任何类的dealloc方法中释放retain属性。在这种情况下,无论如何你都会清理系统,但是你会因为凌乱和乖巧而对你皱眉......