单例类中的内存泄漏

时间:2013-03-21 04:53:00

标签: iphone ios memory-management memory-leaks singleton

我是iPhone开发的新手。 我正在开发一个我使用单音类的应用程序。 当我创建一个单音类的对象时,它在分析我的代码时给了我内存泄漏。它正在发出消息"对象的潜在泄漏"和"以后不会引用分配的对象"。但我在我的代码中使用该对象。 以下是我创建单音班级对象的代码

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSLog(@"Inside View");
    self.navigationController.navigationBar.topItem.title = @"Menu List";

    UIImage *image = [UIImage imageNamed:@"Navigation_bar.png"];
    [_bgImage setFrame:CGRectMake(0,-45,320,510)];
    [self.navigationController.navigationBar setBackgroundImage:image
                                              forBarMetrics:UIBarMetricsDefault];
    [self.tabBarController.tabBar setBackgroundImage:[UIImage imageNamed:@"Tab_bar.png"]];
    [self.navigationItem setHidesBackButton:YES];


    menuTableView.backgroundColor=[UIColor clearColor];
    menuTableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];

    _hotelMenu=[SharedHotelMenu sharedInstanceMethod];
    _queryFormatter=[[DatabaseQueryFormatter alloc]init];

    _isSearchOn=NO;
    _searchResult=[[NSMutableArray alloc]init];

    _categorySearch.layer.cornerRadius = 19;
    _categorySearch.clipsToBounds = YES;
    _categorySearch.delegate=self;

    UIView *_paddingView=[[UIView alloc] initWithFrame:CGRectMake(0,0,5,10)];
    _categorySearch.leftView=_paddingView;
    _categorySearch.leftViewMode=UITextFieldViewModeAlways;
    [_paddingView release];

    UIView *_paddingRightView=[[UIView alloc] initWithFrame:CGRectMake(0,0,30,10)];
    _categorySearch.rightView=_paddingRightView;
    _categorySearch.rightViewMode=UITextFieldViewModeAlways;
    [_paddingRightView release];

    [[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(searchBar)
                                             name:UITextFieldTextDidChangeNotification object:_categorySearch];
}
 }

我创建单音班级对象为_hotelMenu = [SharedHotelMenu sharedInstanceMethod];

1 个答案:

答案 0 :(得分:0)

据我所知,在您的代码中,此行可能会导致内存泄漏

menuTableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];

因为这是@property(nonatomic, retain) UIView *tableFooterView并且它将保留您的对象,因此保留计数变为2。

使用此

UIView *footerView = [[UIView alloc] initWithFrame:CGRectZero];
menuTableView.tableFooterView = footerView;
[footerView release];