使用UIPopoverController进行内存管理

时间:2011-06-30 23:23:51

标签: iphone memory-management

我想仔细检查一下我是否正在进行正确的内存管理。它是否正确?我是否有正确数量的版本。

在我的.h文件中:

UITableView *_sortOrderTableView;
@property (nonatomic, retain) UITableView *SortOrderTableView;

在我的.m文件中:

在dealloc

 [_sortOrderTableView release];

我提供popover的代码是:

- (IBAction)sortButtonOrderPressed:(id)sender {
    UIViewController *sortOrderController = [[UIViewController alloc] init];

    self.SortOrderTableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 200, 100)];
self.SortOrderTableView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"App_Background.png"]];
self.SortOrderTableView.bounces = NO;
self.SortOrderTableView.scrollEnabled = NO;
    sortOrderController.view = self.SortOrderTableView;
    sortOrderController.contentSizeForViewInPopover = CGSizeMake(200, 100);
    self.SortOrderTableView.delegate = self;
    self.SortOrderTableView.dataSource = self;

    self.SortPopover = [[UIPopoverController alloc] initWithContentViewController:sortOrderController];
    [self.SortPopover presentPopoverFromRect:_sortButtonOrder.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

    [self.SortOrderTableView release];
    [sortOrderController release];
}

1 个答案:

答案 0 :(得分:0)

删除[self.SortOrderTableView release];,无论如何都应该是[_sortOrderTableView release];self.SortOrderTableView = nil,但您已经在dealloc方法中调用了它,因此无需在此处发布它。如果您想要发布它,请使用self.SortOrderTableView = nil

除此之外,您还必须在release方法中dealloc使用SortPopover的实例变量。