2010-06-29 48 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

相關問題