以下是示例代码,我正在尝试将iphone的联系人导入到我的应用程序中。
-(IBAction)import_Clicked:(id)sender{
ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init]; //leaking here
picker.peoplePickerDelegate = self;
// Display only a person's phone, email, and birthdate
NSArray *displayedItems = [NSArray arrayWithObjects:[NSNumber numberWithInt:kABPersonPhoneProperty],
[NSNumber numberWithInt:kABPersonEmailProperty],
[NSNumber numberWithInt:kABPersonBirthdayProperty], nil];
picker.displayedProperties = displayedItems;
[self presentModalViewController:picker animated:YES];
[picker release];} 我在仪器上运行了这个,它显示我100%的泄漏,我分配了一个导航控制器。我是在persentmodalviewcontroller之后意识到这一点的。我还能在哪里出错。有任何帮助,请……
发布于 2011-04-03 17:40:04
这里似乎有一个奇怪的SDK bug……阅读苹果官方开发论坛here,了解更多信息和解决方案。
发布于 2011-04-03 17:36:34
奇怪的是,这在我看来不像是泄漏,听说Instruments (很少)报告错误的泄漏。
编辑:忘记后面的内容,改为阅读bbum注释:)
您是否可以尝试删除[picker release],然后使用autorelease:
BPeoplePickerNavigationController *picker = [[[ABPeoplePickerNavigationController alloc] init] autorelease];然后看看仪器是否仍然报告泄漏?如果不是,请保留您的原始代码并忽略该错误警报...
这几乎是相同的,但使用NSAutoReleasePool可能会改变工具的行为。
还请注意,像你这样显式发布比自动发布更干净。
https://stackoverflow.com/questions/5528715
复制相似问题