-(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