1

我是 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];

4

1 回答 1

0

据我在您的代码中看到的是,这一行可能会导致内存泄漏

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

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

用这个

UIView *footerView = [[UIView alloc] initWithFrame:CGRectZero];
menuTableView.tableFooterView = footerView;
[footerView release];
于 2013-03-21T05:06:42.793 回答