iOS 5.1中的内存泄漏

时间:2012-03-28 03:58:51

标签: iphone objective-c uitableview memory-leaks instruments

我只是在UITableView中创建一个简单的UIViewController

·H

#import <UIKit/UIKit.h>

@interface RootController : UIViewController <UITableViewDataSource>
{
    NSMutableArray *_tableData;
    UITableView *_tableView;
}
@end

的.m

#import "RootController.h"

@implementation RootController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
        if (!_tableData) {
            _tableData = [[NSMutableArray alloc] initWithCapacity:20];
            for (int i = 0; i < 50; i++) {
                [_tableData addObject:[NSString stringWithFormat:@"%d", i]];
            }
        }
    }
    return self;
}

- (void)dealloc
{
    [_tableView release];
    [_tableData release];
    [super dealloc];
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
}

- (void)loadView
{
    UIView *view = [[UIView alloc] initWithFrame:[UIScreen mainScreen].bounds];
    self.view = view;
    [view release];

    self.view.backgroundColor = [UIColor whiteColor];

    if (!_tableView) {
        _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
        _tableView.dataSource = self;
    }
    [self.view addSubview:_tableView];
}

- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [_tableData count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *cellIdentifier = @"TableViewCellIdentifier";
    UITableViewCell *cell = nil;
    cell = [_tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier] autorelease];
    }

    cell.textLabel.text = [_tableData objectAtIndex:indexPath.row];

    return cell;
}

@end

当我滚动UITableView内存时,我用仪器来检测内存泄漏  泄漏发生了。 enter image description here

我使用Xcode 4.3.1和iOS5.1(iPod touch4)。 有人有这个问题吗?

1 个答案:

答案 0 :(得分:1)

如果查看“负责的库”列,您会发现罪魁祸首不是您的代码。泄漏很小,你可以放心地忽略它们。

以下是一个类似的问题:WebView: libdispatch leaks in an ARC-enabled app