Почему мне говорят установить точку останова на malloc_error_break? - PullRequest
1 голос
/ 14 мая 2010

Я вижу следующую ошибку в моем приложении:

(4446,0xa0bc94e0) malloc: * ошибка для объекта 0x1d153000: указатель освобождение не было выделено * установить точку останова в malloc_error_break для отладки

Что означает эта ошибка?

Я пытаюсь отобразить 2000 адресов в виде таблицы, и вижу эту ошибку в следующем коде с cellForRowAtIndexPath:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView  dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) 
    {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];


    }

    obdata = [AddressBookData alloc];
    obdata = [arrayLocalAddressbook objectAtIndex:indexPath.row];
    // Set button Tag

    cell.textLabel.text =  [NSString  stringWithString:obdata.lastname];

    return cell;



}

// Customize the number of sections in the table view.
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    //return [indexArray count];
    return 1;

}



// Customize the number of rows in the table view.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{

    return [arrayLocalAddressbook count];

}

Что может быть причиной этого?

Ответы [ 2 ]

1 голос
/ 14 мая 2010

Приложение дает вам подсказку о том, как действовать: установите точку останова в malloc_error_break. Когда вы попадете туда, проверьте обратный след приложения. Вы, вероятно, обнаружите, что вы чрезмерно отпускаете объект или держитесь за устаревший указатель.

0 голосов
/ 22 июня 2012

Две странные вещи:

obdata = [AddressBookData alloc];

Вы не вызываете init для этого объекта - в obj-c вы обычно используете alloc-init вместе.

obdata = [arrayLocalAddressbook objectAtIndex:indexPath.row];

Затем вы немедленно назначаете что-то еще этой переменной, поэтому первые AddressBookData никогда не используются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...