2011-06-30 151 views
0

我想仔細檢查一下我是否正在進行正確的內存管理。它是否正確?我是否擁有正確數量的版本?使用UIPopoverController進行內存管理

在我的.h文件:

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

在我的.m文件:

在dealloc的

[_sortOrderTableView release]; 

我的代碼,呈現酥料餅是這樣的:

- (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]; 
} 

回答

0

刪除[self.SortOrderTableView release];,無論如何它應該是[_sortOrderTableView release];self.SortOrderTableView = nil,但是你已經在你的dealloc方法中調用了它,所以不需要在這裏釋放它。如果您想要釋放它,請使用self.SortOrderTableView = nil

除此之外,您還需要在您的dealloc方法中使用SortPopover的實例變量release

+0

爲什麼你使用[_sortOrderTableView版本] vs self.SortOrdersTableView版本]?那部分對我而言並不清楚。謝謝。 – Crystal

+0

self.SortOrdersTableView基本上是一個實例方法,由@synthesize創建並設置並獲取_sortOrderTableView,並且您不能釋放方法。然而,_sortOrderTableView是一個實例變量,您可以(也應該)釋放它 – Sascha

相關問題