gpt4 book ai didi

objective-c - NSString initWithFormat 内存泄漏问题

转载 作者:搜寻专家 更新时间:2023-10-30 20:07:02 28 4
gpt4 key购买 nike

XCode 提示 [NSString initWithFormat] 方法(如 Instruments 窗口中所列)是内存泄漏的来源。它列出了特定的方法,因此在该方法中我确定了唯一带有 initWithFormat 的代码行(与 Instruments 中发现的一些泄漏不同,这不会将我带到某些代码的确切违规行原因):

 NSString * name=[[NSString alloc] initWithFormat:@"%@",[[lineArray objectAtIndex:0] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] ];

CustomObject * newData=[[CustomObject alloc] init];
newData.info=name; // info is a retained NSString ivar of CustomObject

[name release];
[self.ivar setObject:newData forKey:@"key"];
[newData release];

initWithFormatrelease 在同一范围内:两者都出现在 if 语句中。

是否有一些 NSString 方法以某种方式调用 initWithFormat 而在代码中并不明显?比如这些 stringByTrimmingcharactersInSet 类型的方法?

更新:我已经在 initWithFormatrelease 之间添加了所有代码——此外,即使我将 initWithFormat 更改为 stringWithFormat,Xcode 给了我同样的内存泄漏,而不是识别 stringWithFormat,所以这显然是导致问题的对象。

最佳答案

仪器没有显示物体泄漏的位置;它显示了泄漏的对象是在哪里创建的。所以可能发生的事情是您没有在 dealloc 方法中释放 CustomObject 类的 info ivar。要么,要么你在其他地方过度保留了那个对象。

关于objective-c - NSString initWithFormat 内存泄漏问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7232451/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com