加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

objective-c – 目标C中的泄漏方法

发布时间:2020-12-16 10:19:07 所属栏目:百科 来源:网络整理
导读:我正在研究Stephen Kochan在Objective-C中的编程(这是为了承认我是一个完全的初学者). 我目前的程序是分数计算器.我有加,减,乘和除法.乐器告诉我他们都在泄漏(只是一点点,但它是一个很小的程序.) 这是减法方法的定义(其余的遵循非常相似的形式): -(Fraction
我正在研究Stephen Kochan在Objective-C中的编程(这是为了承认我是一个完全的初学者).

我目前的程序是分数计算器.我有加,减,乘和除法.乐器告诉我他们都在泄漏(只是一点点,但它是一个很小的程序.)

这是减法方法的定义(其余的遵循非常相似的形式):

-(Fraction *)   subtract: (Fraction *) f;
{
    Fraction    *result = [[Fraction alloc] init];
    int         resultNum,resultDenom;

    resultNum = numerator * f.denominator - f.numerator * denominator;
    resultDenom = denominator * f.denominator;

    [result setTo: resultNum over: resultDenom];

    return result;
    [result release];
}

想堵塞泄漏?提前谢谢.

此外,我四处寻找网站上的另一个解释,但遗憾的是,我认为没有其他人问过任何这么基本的问题.

解决方法

问题在于:

return result;
[result release];

-release永远不会发送到结果,因为返回后的任何语句都不会被执行.这些语句称为死代码.

你应该自动释放你的对象,例如:

return [result autorelease];

请注意,您应该使用-autorelease而不是-release,因为-release会导致结果的立即释放,这不是您想要的.另一方面,自动释放的对象在将来的某个时刻被释放 – 特别是在相应的自动释放池被耗尽时.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读