对象中的内存泄漏

时间:2010-07-02 07:58:42

标签: objective-c

我的对象设置器中的内存泄漏可以帮助我解决这个问题吗?

代码:

  - (void)setEstimateTax2Type:(NSString *)aEstimateTax2Type
{

if ((!estimateTax2Type && !aEstimateTax2Type) || (estimateTax2Type && aEstimateTax2Type && [estimateTax2Type isEqualToString:aEstimateTax2Type])) return;

[estimateTax2Type release];
estimateTax2Type = [aEstimateTax2Type copy]  ;
}

提前感谢。

Monish。

4 个答案:

答案 0 :(得分:2)

让setter正确的最简单方法(例如你的条件完全没必要):

//.h
@property (nonatomic, copy) NSString *estimateTax2Type;
//.m
@synthesize estimateTax2Type;

答案 1 :(得分:1)

向nil发送消息没有问题。所以你的测试可以是:

if ([aEstimateTax2Type isEqualToString: estimateTax2Type])
{
    return;
}

但是,这不是泄漏的原因。我怀疑,你没有在你的dealloc方法中发布estimateTax2Type。

答案 2 :(得分:1)

当您的课程被解除分配时,您是否有dealloc方法来释放estimateTax2Type

- (void)dealloc {
    [estimateTax2Type release];
    [super dealloc];
}

答案 3 :(得分:0)

您的条件:

if (
  (!estimateTax2Type && !aEstimateTax2Type) || 
  (estimateTax2Type && aEstimateTax2Type && 
    [estimateTax2Type isEqualToString:aEstimateTax2Type])
) return;

似乎在释放内存之前终止该功能:

[estimateTax2Type release];

虽然我没有看到任何alloc