目标C中的泄漏方法。

| 我正在研究Stephen Kochan的Objective-C编程(要承认我是一个完整的初学者)。 我当前的程序是分数计算器。我有加,减,乘和除法。 Instruments告诉我它们都在泄漏(只有一点点,但这是一个很小的程序。) 这是减法的定义(其余方法非常相似):
-(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];
never2ѭ不会发送到
result
,因为
return
之后的任何语句都不会执行。这样的语句称为无效代码。 您应该自动释放对象,例如:
return [result autorelease];
请注意,您应使用
-autorelease
而不是
-release
,因为
-release
会立即取消分配
result
,这不是您想要的。另一方面,自动释放的对象在将来的某个时候释放,特别是在耗尽相应的自动释放池时。     
更换:
return result;
[result release];
带有:
return [result autorelease];
    

要回复问题请先登录注册