-(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. 我需要釋放局部變量嗎?
- 3. does XMLDOMNodePtr :: get_text()需要明確釋放嗎?
- 4. 你如何判斷你是否需要釋放一個對象?
- 5. GL_TEXTUREs是否需要釋放/釋放?
- 6. NSData需要更新
- 7. NSData dataWithContentsOfUrl需要javascript
- 8. 需要釋放互斥鎖?
- 9. allocWithZone對象需要釋放
- 10. CGPoint需要解釋嗎?
- 11. Objective-C的釋放,自動釋放,澄清需要
- 12. 轉換爲Mat後需要釋放IplImage嗎?
- 13. 使用ARC時還需要釋放任何內存嗎?
- 14. 我需要從ptsname()中釋放結果嗎?
- 15. 我需要釋放手勢識別器嗎?
- 16. 我需要在.NET中釋放私人界面字段嗎?
- 17. 在德爾福2009年,我需要釋放變體數組嗎?
- 18. 正在釋放需要Objective-c 2.0屬性的內存嗎?
- 19. UIButton的子視圖需要釋放?
- 20. 我是否需要釋放此對象?
- 21. 使用PoolingHttpClientConnectionManager時需要釋放連接
- 22. 是否需要釋放該對象?
- 23. 什麼時候需要釋放內存?
- 24. 我是否需要釋放UITouch對象?
- 25. 你需要omniauth與考拉合作嗎?
- 26. 你需要每個主題的KafkaTemplate嗎?
- 27. ADO.NET:你需要回滾事務嗎?
- 28. 你需要一個mobilel響應庫嗎?
- 29. 當你有VS2010時需要Expression Blend嗎?
- 30. removeFromParentViewController - 之後你需要零嗎?
有沒有可能的方法來知道在這種情況下發布是否是必要的。 – dreamlax 2011-04-18 07:04:18
您需要提供更多信息。從你的代碼片段中,沒有辦法知道如何/何時/是否發生'somedata'的所有權。考慮編輯你的問題,並在獲得'NSData *'實例的地方發佈代碼,以及如何將它傳遞給'-func1:'。 – 2011-04-18 07:12:15