gpt4 book ai didi

ios - NSDecimalNumber 占位符泄漏

转载 作者:行者123 更新时间:2023-11-29 13:45:22 27 4
gpt4 key购买 nike

我有一个 iPad 应用程序,在 Beta 测试之前我正在 Instruments 中对其进行测试。除了一个内存泄漏,我已经摆脱了所有内存泄漏,而且我找不到任何关于它的信息。我不知道该怎么做,因为我的代码从未提到泄漏对象,它是 NSDecimalNumberPlaceHolder 的一个实例。

当然我使用的是 NSDecimalNumber。我为每个用户操作创建 2 个小数,每次我运行一个应用程序循环(对两个 NSDecimalNumbers 执行一些数学运算)时,我都会生成这个 NSDecimalPlaceHolder 事物的四个实例。因为我不知道它是如何创建的,所以我不知道如何释放或释放它,以免一遍又一遍地产生这些 16 btye 泄漏。

有没有可能这些不是真正的泄漏?

我已经运行了 XCode Analyzer,它没有报告任何问题。

我正在做的是:

我将一个十进制数从我的 Controller 发送到我的模型 (analyzer_),该模型执行操作并发回结果。

[[self analyzer_] setOperand:[NSDecimalNumber decimalNumberWithString:anotherStringValue]];

setOperand 方法如下所示:

-(void)setOperand:(NSDecimalNumber*)theOperand
{
NSLog(@"setOperand called");
operand_ = theOperand;
//[operand_ retain];

请注意,如果我不保留 operand_“某处”,我会遇到 BAD_ACCESS 崩溃。我目前保留并稍后在操作数和先前提供的操作数 (queuedOperand_) 进行操作时释放它。例如:

{
[self performQueuedOperation];
queuedOperation_ = operation;
queuedOperand_ = operand_;
}

return operand_;
[operand_ release];

performQueuedOperation 在哪里:

-(void)performQueuedOperation
{
[operand_ retain];
if ([@"+" isEqualToString:queuedOperation_])
{
@try
{
operand_ = [queuedOperand_ decimalNumberByAdding:operand_];
}
@catch (NSException *NSDecimalNumberOverFlowException)
{
//viewController will send decimal point error message
}
<etc for the other operations>
}

如果不清楚,请告诉我。谢谢。

最佳答案

在 Instruments 中尝试 Heapshot,请参阅:When is a Leak not a Leak?

如果仍然有指向不再使用的内存的指针,则不是泄漏,而是丢失内存。我经常使用 Heapshot,它真的很棒。同时在 Allocations 工具中打开记录引用计数并向下钻取。这是屏幕截图:enter image description here

关于ios - NSDecimalNumber 占位符泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7630195/

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