这段代码有点问题:
UITableViewCell *cell = (UITableViewCell *)[[button superview] superview];
[button setBackgroundImage: [UIImage imageNamed:@"blueButton.png"] forState:UIControlStateNormal];
VersionsPopover* content = [[[VersionsPopover alloc] initwithChapter:button.chapter]autorelease];
UIPopoverController* aPopover = [[UIPopoverController alloc] initWithContentViewController:content];
aPopover.delegate = self;
aPopover.popoverContentSize = CGSizeMake(500,[self filesFromFolderWithChapter:button.chapter] * 60);
这个
VersionsPopover* content = [[[VersionsPopover alloc] initwithChapter:button.chapter]autorelease];
总是让我有潜在的泄漏
使用autorelease
我得到aPopover
“对象发送自动释放次数太多了”
当我使用[content release]
时Xcode告诉我我没有这个对象
没有发布它说“潜在的泄漏”。
不知道我还能尝试解决这个问题......
答案 0 :(得分:1)
这样做。
VersionsPopover* content = [[[VersionsPopover alloc] initwithChapter:button.chapter] retain];
UIPopoverController* aPopover = [[UIPopoverController alloc]
initWithContentViewController:content];
aPopover.delegate = self;
aPopover.popoverContentSize = CGSizeMake(500,[self filesFromFolderWithChapter:button.chapter] * 60);
[content release];
答案 1 :(得分:0)
您可以尝试初始化content
对象而不发送最终的autorelease
消息。
然后用它做你想做的事情,最后当你不再需要它时发送release
消息。
根本不应该有任何泄漏。
答案 2 :(得分:0)
您展示的代码不应泄漏或过度发布(除了泄漏aPopover
,但我猜您正在处理未在此处显示的代码中。)
您可能会在VersionsPopover
的{{1}},init...
,viewWill...
方法中过度释放对象。