2011-10-05 62 views
0

因此,对于我的程序,我使用了5种不同的视图,都需要访问和共享相同的数据。当我第一次开始为iPhone开发时,我发现了一种创建数据并将其存储在appDelegate中的方法。现在,我有大量的变量,我从那里访问。如何发布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; 

然后@synthesize他们在.m文件

,并使用

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

访问他们所有的功能。现在,如果我不再需要变量,我只需将它设置为零。我应该在appDelegate的dealloc中释放它们吗?内存有没有得到清除其他应用程序终止?

回答

0

尽管Agri_ImaGIS_iPhoneAppDelegate的单例实例在app完成之前不会被释放,但是在任何类的dealloc方法中释放retain属性都是很好的做法。无论如何,在这种情况下,系统会清理干净,但会因为被混乱和严重的表现而皱眉头......

0

一般规则的声音: 每当你分配一个对象时,你可以在同一个类中释放它。 这些NSNumbers和NSStrings没有什么不同。 你可以将它们设置为无,无论你喜欢但你仍然必须在dealloc中释放它们。

+0

释放它,而不是释放它。你的经验法则也有些误导,因为它在工厂方法等几种情况下是不真实的。最好将人们连接到内存管理文档,并遵循NARC规则。 –