gpt4 book ai didi

objective-c - 在 init 中引发异常时如何防止泄漏?

转载 作者:行者123 更新时间:2023-12-03 06:15:51 27 4
gpt4 key购买 nike

情况是这样的。假设我有一个名为 MYFoo 的类。这是它的初始化程序:

-init
{
self = [super init];
if (self)
{
// during initialization, something goes wrong and an exception is raised
[NSException raise ...];
}
return self;
}

现在我想在其他地方使用 MYFoo 对象,所以我使用一个通用模式:

MYFoo *foo = [[[MYFoo alloc] init] autorelease];

但是将会发生的是,即使第二部分周围有一个 try/catch,也会分配一个 MYFoo 对象,抛出异常,错过自动释放,并且未初始化的 MYFoo 对象将会泄漏。

这里应该做什么来防止这种泄漏?

最佳答案

Apple Docs说最好的做法是不要扔。

Handling Initialization Failure

In general, if there is a problem during an initialization method, you should call [self release] and return nil.

如果您需要知道发生了什么,您可以初始化该对象并拥有某种内部状态,调用者会检查该状态以确保该对象可用。

关于objective-c - 在 init 中引发异常时如何防止泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5005852/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com