我遇到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;
我的财产是否正确宣布?
答案 0 :(得分:1)
您是否在[SomeView dealloc]
方法中发布了这样的字符串:
- (void)dealloc
{
self.test = nil;
[super dealloc];
}
答案 1 :(得分:0)
无论你用什么“检测”泄漏,这有多可靠?
现在我从未使用过属性,但上面的代码看起来非常正确 - 字符串应该被释放。无论如何,“stringWithCString:”将自动释放字符串,所以没有问题。但是,你的属性中的“副本”似乎表明它对字符串进行了复制(呵呵?惊喜!),即使我假设当拥有对象死亡时释放对象类型属性 - 如果拥有对象永远不会死,然后复制的字符串永远不会被释放。
也许内存泄漏检测器真的意味着该字符串的副本永远不会释放,因为您忘记发布“detailViewController”?该副本仍然位于相同的源代码行中,因此即使内存泄漏检测器可以提供准确的位置但只提供行号,您也可能被误导...