English 中文(简体)
由于目标C的一个例外,我应如何处理可能的记忆泄漏?
原标题:How should I handle a possible memory leak because of an exception in Objective-C?

我有一种方法可以分配物体,然后最终释放。 在这两种方法之间,使用另一种可能产生例外的方法,而采用我的方法可能会使例外情形陷入。 如果发生这种情况,该物体将永远不会被释放(或是否会释放)。 我如何防止这种情况发生?

最佳回答

你们总是可以在要求可能放弃的方法之前自动释放它——这样,你可以肯定的是,不管是否将放弃一个例外。

如果出于某种原因无法做到这一点,你可以在以下网站上公布:@finally/2005/41<><<>>/<>>/sup>:

A @finally栏载有无论是否提出例外都必须执行的代码。

注:使用<代码>@finally 页: 1 罚款:

Resource *resource = [[Resource alloc] init];
@try {
    [obj someMethodThatMayThrow];
}
@finally {
    [resource release];
}
问题回答

Do not throw exceptions for anything but fatal, non-recoverable, errors

这是整个框架和系统采用的可可设计模式。 如果你决定想利用例外情况控制流动:

  • 你们正在违背可可模式,你的编码在系统标注器中是不合适的。

  • 如果在提出例外的系统框架中存在 任何框架,这些框架将留有未界定的国家

仅用“号”表示方案错误:;表示该笔款项已进入可能恢复的国家。 不要浪费你试图支持这一模式之外的例外情况的时间,你只是浪费时间,制定像系统框架那样不工作的守则。

请注意,在SOS上 throw一个例外实际上非常昂贵(CPU和记忆)。 同样,“......最终不会是免费的,尽管“......”的间接费用相对较小。





相关问题
handling exceptions IN Action Filters

Is there a better way to handle exceptions that occur inside an Action Filter itself in ASP .NET MVC? There re 2 ways I can think of at the moment. Using a try catch and setting the HTTP Status ...

既可捕获,又可举出例外。

我有一种办法,可以进入亚洲开发银行,因此,我国的亚行在多瑙河航道中的所有 st子都位于一个试捕区。 它正在追捕Kexception

Cross compiler exception handling - Can it be done safely?

I am doing some maintenance on a C++ windows dll library that is required to work with different VC++ compilers (as I don’t want to address different mangling schemes). I have already eliminated any ...

File Handling Issue

I am developing a tool in c#, at one instance I start writing into a xml file continuously using my tool,when i suddenly restart my machine the particular xml file gets corrupted, what is the reason ...

Watch a memory location/install data breakpoint from code?

We have a memory overwrite problem. At some point, during the course of our program, a memory location is being overwritten and causing our program to crash. the problem happens only in release mode. ...

Unit Test for Exceptions Message

Is there a simple (Attribute-driven) way to have the following test fail on the message of the exception. [TestMethod()] [ExpectedException(typeof(ArgumentException))] public void ExceptionTestTest() ...