Утечка памяти в iOS 5.1 - PullRequest
       23

Утечка памяти в iOS 5.1

1 голос
/ 28 марта 2012

Я просто создаю простой 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 Ответ

1 голос
/ 28 марта 2012

Если вы посмотрите на столбец «ответственная библиотека», то увидите, что виновником является не ваш код. Утечки небольшие, их можно смело игнорировать.

Вот аналогичный вопрос: WebView: утечка libdispatch в приложении с поддержкой ARC

...