XCode提示[NSString initWithFormat]
方法(如“工具”窗口中列出的)是内存泄漏的来源。它列出了特定的方法,因此在该方法中,我确定了唯一的代码行initWithFormat
(与仪器中标识的某些泄漏不同,由于某些原因,此代码不会带我到确切的代码行):NSString initWithFormat内存泄漏跳线
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];
initWithFormat
和release
在相同的范围内:都出现在if
语句中。
是否有一些NSString方法,不知何故调用initWithFormat
而没有在代码中显而易见?比如这些stringByTrimmingcharactersInSet
类型的方法?
更新:我已经添加了所有的代码initWithFormat
和release
之间 - 而且,即使我改变initWithFormat
到stringWithFormat
,Xcode中给了我同样的内存泄漏,而是识别stringWithFormat
,所以这显然是使物体问题。
你发布的这段代码看起来不错,必须有一些中间代码导致这个问题。您可能想要扩展您的代码示例,以显示您在使用'name'变量时在分配和释放之间做了什么。 – Perception
谢谢,我已经更新了我的问题。 – johnbakers
也许它确实会把你带到确切的犯规代码行,但你不认识它?请显示确切的违规行。 –