2010-06-29 45 views
0

iPhone应用程序中的内存管理仍然是新的,我有一个newbee问题。 假设我有一些使用AppDelegate属性的方法。在这些方法的开始,我得到的委托,如:应用程序代表是否需要发布?

// Get delegate 
MyAppDelegate *delegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate]; 

我需要在方法的最后执行某种版本的(我想添加[委托发布]在每个月底像这样的方法)。

一般而言,我们是否必须在方法结束时释放在此方法内创建的每个对象变量(NSString,NSData,...)?

非常感谢, 吕克

回答

1

规则很简单:

如果当你得到(在这种情况下的appDelegate)对一个对象的引用,你没有在对象上调用alloc那你就不要需要发布。如果您确实在您提供的该行代码中拨打了alloc,那么您想要致电[delegate release];

+0

非常感谢,澄清了很多东西:) – Luc 2010-06-29 14:01:18

+0

这不是'init',它是重要的部分,它是'alloc'。 CARN规则,如果方法包含Copy,Alloc,Retain或New,那么您很可能需要释放它。 – Jasarien 2010-06-29 14:04:09

+0

将我的答案从init更改为alloc。谢谢 – jamone 2010-06-29 14:09:55

1

不。这只是对您的代理的引用,它很可能被程序的其他部分使用。

+0

好的,谢谢,顺便说一句,释放一个对象时,它是不必要的可能会导致任何麻烦? – Luc 2010-06-29 14:02:00

+0

如果你释放你的委托,是的,它将一定会造成麻烦。值得学习何时发布以及何时不发布。根据需要释放次数非常重要,而不是一次或多次。 – 2010-06-29 20:35:15

相关问题