以下是示例代码,我正在尝试将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%泄漏在我分配abpeoplepickernavigationcontroller的行。我在persentmodalviewcontroller之后实现了它。在哪里我可能会出错。 任何帮助,请.....
答案 0 :(得分:0)
奇怪,这看起来不像是泄密给我,听说乐器(很少)报告漏报。
编辑:忘记后面的内容并改为阅读bbum评论:)
您可以尝试删除[picker release]
,然后使用autorelease
代替:
BPeoplePickerNavigationController *picker = [[[ABPeoplePickerNavigationController alloc] init] autorelease];
然后看看仪器是否仍然报告泄漏?如果没有,请保留原始代码并忽略该错误警报......
这几乎相同,但使用NSAutoReleasePool
可能会改变乐器行为。
请注意,像你一样明确发布的方法比自动释放更清晰。
答案 1 :(得分:0)
这里似乎有一个奇怪的SDK错误...请阅读官方Apple开发论坛here以获取更多信息和解决方案。