-(void) func1: (NSData*) somedata
{
//Processing somedata ....
[somedata release]; //is it necessay?
}
回答
您不應該在您的方法中釋放somedata
。
NSData *somedata = [[NSData alloc] init];
func1(somedata);
[somedata release];
假設:
- FUNC1在同一個線程中運行
Somedata的原始擁有者如何知道什麼時候不需要它。 SomeData會傳遞給另一個函數或另一個對象。 – lilzz 2011-04-18 07:22:12
我將編輯我的文章 – cweinberger 2011-04-18 07:23:07
如果someData來自一些複雜的委託函數並從回調函數接收到該怎麼辦。沒有辦法將[somedata發佈]放入這些最初的代理函數或預期的代碼中。 – lilzz 2011-04-18 07:33:18
你應該考慮將其釋放。如果你保留它在這種情況下。但我不確定,因爲你的問題沒有提供是否需要發佈的任何想法。但是如果你擁有它的話,通常你會得到release
個對象。
我可能會同意這一點,因爲你得到了一些數據。原始的所有者不知道您是否完成了someData。只有你知道someData已經完成並且不需要。 – lilzz 2011-04-18 07:20:27
在這種情況下,不,你不應該釋放你的對象。你不是「所有者」。作爲一個經驗法則,你需要釋放的對象,一旦你如果正在使用它只是做:
- 您通過
[MyClass alloc]
分配它,因爲在[[MyClass alloc] init]
或[[MyClass alloc] initWithFoo:foo bar:baz]
。 - 您通過
[someObject copy]
或[someObject mutableCopy]
獲得了副本。 - 您之前保留了它。
- 1. 我需要釋放CFError嗎?
- 2. 它需要釋放AVCaptureVideoPreviewLayer嗎?
- 3. NSData釋放內存
- 4. 需要釋放QList內容嗎?
- 5. 我們需要釋放常量嗎?
- 6. 我需要釋放局部變量嗎?
- 7. 需要使用JNI釋放jboolean嗎?
- 8. does XMLDOMNodePtr :: get_text()需要明確釋放嗎?
- 9. 你需要belongs_to嗎?
- 10. 你如何判斷你是否需要釋放一個對象?
- 11. GL_TEXTUREs是否需要釋放/釋放?
- 12. NSData dataWithContentsOfUrl需要javascript
- 13. NSData需要更新
- 14. 需要釋放互斥鎖?
- 15. allocWithZone對象需要釋放
- 16. NSArray不需要的釋放
- 17. 安裝RVM時出錯:需要BASH 3.2.25(你有4.3.42(4) - 釋放)
- 18. CGPoint需要解釋嗎?
- 19. 即使在讀取文件的同時釋放內存時,也需要釋放內存到NSData
- 20. 我需要從ptsname()中釋放結果嗎?
- 21. 我需要釋放從LocalBroadcastManager.getInstance獲取的LocalBroadcastManager嗎?
- 22. 正在釋放需要Objective-c 2.0屬性的內存嗎?
- 23. 我需要釋放我修改並返回的JNI數組嗎?
- 24. 我需要釋放手勢識別器嗎?
- 25. 使用ARC時還需要釋放任何內存嗎?
- 26. 在德爾福2009年,我需要釋放變體數組嗎?
- 27. 轉換爲Mat後需要釋放IplImage嗎?
- 28. 我需要在.NET中釋放私人界面字段嗎?
- 29. 我需要釋放複製的NSObject嗎?Objective-c
- 30. 完成後需要釋放使用NSKeyedUnarchiver進行解碼嗎?
有沒有可能的方法來知道在這種情況下發布是否是必要的。 – dreamlax 2011-04-18 07:04:18
您需要提供更多信息。從你的代碼片段中,沒有辦法知道如何/何時/是否發生'somedata'的所有權。考慮編輯你的問題,並在獲得'NSData *'實例的地方發佈代碼,以及如何將它傳遞給'-func1:'。 – 2011-04-18 07:12:15