Почему в Objective-C я получаю "Сообщение отправлено на освобожденный экземпляр"? - PullRequest
0 голосов
/ 29 марта 2010

У меня есть несколько кнопок в моем приложении, которые создаются динамически. Все они указывают на событие нажатия кнопки при нажатии. Когда вызывается метод с нажатой кнопкой, тег отправителя (значение int) анализируется в ID дома контроллера. Он работает с одной из кнопок - первой, созданной, если быть точным, - но другие выдают следующую ошибку:

-[CFNumber intValue]: message sent to deallocated instance 0xc4bb0ff0

Я не отпускаю эти кнопки в моем коде. Я не настроил их на автоматический выпуск или что-то в этом роде. Мне просто интересно, почему они делают это на клике.

Событие нажатия кнопки:

- (IBAction) ButtonClick: (id) sender
{

    HouseholdViewController *controller = [[HouseholdViewController alloc] initWithNibName:@"HouseholdViewController" bundle:nil];
    controller.delegate = self;

    controller.HouseID = [(NSInteger)[(UIButton *)sender tag] intValue]; //this line throws an error

    controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentModalViewController:controller animated:YES];

    [controller release];   
}

Где я создаю кнопки:

        UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
        button.frame = CGRectMake(MyLongInScreenCoords, MyLatInScreenCoords, 50, 50);
        UIImage *buttonImageNormal = [UIImage imageNamed:@"blue_pin.png"];
        UIImage *strechableButtonImageNormal = [buttonImageNormal stretchableImageWithLeftCapWidth:50 topCapHeight:50];
        [button setBackgroundImage:strechableButtonImageNormal forState:UIControlStateNormal];
        [self.view  addSubview:button];
        button.tag = [NSNumber numberWithInt:[[words objectAtIndex: i] intValue]];
        ButtonPoints[CurrentHouseCount][0] = button;
        ButtonPoints[CurrentHouseCount][1] = [NSValue valueWithCGPoint:CGPointMake(MyActualLat, MyActualLong)];
        [button addTarget:self action:@selector(ButtonClick:) forControlEvents:UIControlEventTouchUpInside];
        CurrentHouseCount++;

1 Ответ

2 голосов
/ 29 марта 2010
Тег

является целочисленным свойством, а не объектом. просто установите его

button.tag = [[words objectAtIndex: i] intValue];

и использование:

controller.HouseID = [(UIButton *)sender tag];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...