stringWithCString中的内存泄漏

时间:2012-07-14 09:42:13

标签: objective-c cocoa

我遇到stringWithCString的内存泄漏,是否有人在stringWithCstring函数中发现内存泄漏?

SomeView *detailViewController = [[SomeView alloc] initWithNibName:@"SomeView" bundle:nil];
detailViewController.test = [NSString stringWithCString:"abc" encoding:UTF8_ENCODING];

SomeView for test变量中的属性是

@property (nonatomic,copy) NSString* test;

我的财产是否正确宣布?

2 个答案:

答案 0 :(得分:1)

您是否在[SomeView dealloc]方法中发布了这样的字符串:

- (void)dealloc
{
    self.test = nil;
    [super dealloc];
}

答案 1 :(得分:0)

无论你用什么“检测”泄漏,这有多可靠?

现在我从未使用过属性,但上面的代码看起来非常正确 - 字符串应该被释放。无论如何,“stringWithCString:”将自动释放字符串,所以没有问题。但是,你的属性中的“副本”似乎表明它对字符串进行了复制(呵呵?惊喜!),即使我假设当拥有对象死亡时释放对象类型属性 - 如果拥有对象永远不会死,然后复制的字符串永远不会被释放。

也许内存泄漏检测器真的意味着该字符串的副本永远不会释放,因为您忘记发布“detailViewController”?该副本仍然位于相同的源代码行中,因此即使内存泄漏检测器可以提供准确的位置但只提供行号,您也可能被误导...