对于10.6和ios 5,我使用xcode 4.2,并且在使用xcode分析项目时报告了这种奇怪的内存泄漏。objective c subStringToIndex内存泄漏
下面是代码:
- (void) imagePickerController: (UIImagePickerController*) reader
didFinishPickingMediaWithInfo: (NSDictionary*) info
{
id<NSFastEnumeration> results = [info objectForKey: ZBarReaderControllerResults];
ZBarSymbol *symbol = nil;
for (symbol in results) break;
[reader dismissModalViewControllerAnimated: NO];
[self beep];
NSString *upcScanned = [NSString stringWithFormat:@"0%@", symbol.data]; //line 1
NSString * name = [self getItemName:upcScanned];
ProductNameDialog *dialog = [[ProductNameDialog alloc] initWithNibName:@"ProductNameDialog" bundle:nil];
//dialog.upcScanned = [upcScanned substringToIndex:[upcScanned length] - 1];//line 2
[name release];
[self presentModalViewController:dialog animated:YES];
[dialog release];
}
LINE2是线报道内存泄漏。
添加断点或登录对话框释放以查看它是否实际被调用。 –
你是否还在对话的dealloc方法中释放了'upcScanned'(或者因为你没有定义实例变量而将它设置为'nil')? 'viewDidUnload'不一定会被调用,它通常只用于低内存条件。 – omz
泄漏检测器报告分配泄漏物体的线。静态分配的字符串永远不会被认为是泄漏。您可能正在使用upcScanned在其他方法,你有一个不平衡的保留。 –