релиз iphone uiButton - PullRequest
       13

релиз iphone uiButton

0 голосов
/ 16 ноября 2011

Сэр,

- (void)viewDidLoad{
for (int i = 1; i <= 4; i++)
{
   playButton=[[UIButton alloc]initWithFrame:CGRectMake(curLocX,1.0,45,kScrollObjHeight)];
    [playButton   setBackgroundImage:[UIImage imageNamed:@"Play.png"] forState:UIControlStateNormal];
    [playButton addTarget:self  action:@selector(playClicked) forControlEvents:UIControlEventTouchUpInside];
  curLocX+=100;
   }}

У меня есть релиз playButton в viewDidUnload и dealloc 1. Я создал четыре кнопки, но я выпустил только один раз, правильно или неправильно 2. Я выпустил viewDidUnload и удалил его правильно или неправильно Заранее спасибо за ваши ценные предложения Suresh.M

Ответы [ 3 ]

2 голосов
/ 16 ноября 2011

да, если объект был выделен 4 раза, он должен быть освобожден с тем же количеством подсчета.

Кстати, я не уверен, что вы пытаетесь сделать здесь, в конце цикла playButtonбудет иметь ссылку только на последний объект, и вы даже не добавите свой playButton в качестве подпредставления для любого представления.В любом случае вы можете избежать использования метода alloc и user buttonWithType, этот метод сам обрабатывает выделение и освобождение объекта UIButton, поэтому вам не нужно беспокоиться о вызове release.

- (void)viewDidLoad{
for (int i = 1; i <= 4; i++)
{
    UIButton *playButton = [UIButton buttonWithType: UIButtonTypeCustom];
    playButton.frame = CGRectMake(curLocX,1.0,45,kScrollObjHeight);
    [playButton   setBackgroundImage:[UIImage imageNamed:@"Play.png"] forState:UIControlStateNormal];
    [playButton addTarget:self  action:@selector(playClicked) forControlEvents:UIControlEventTouchUpInside];
    curLocX+=100;
    [self.view addSubview: playButton]; //you might have missed this statement

}}

0 голосов
/ 16 ноября 2011

Вы должны отпустить кнопку в самой петле для .

 for (int i = 1; i <= 4; i++)
    {
       playButton=[[UIButton alloc]initWithFrame:CGRectMake(curLocX,1.0,45,kScrollObjHeight)];
        [playButton   setBackgroundImage:[UIImage imageNamed:@"Play.png"] forState:UIControlStateNormal];
        [playButton addTarget:self  action:@selector(playClicked) forControlEvents:UIControlEventTouchUpInside];
       curLocX+=100;
       [playButton release];
       }

ПРИМЕЧАНИЕ. Если вы выделили объект n раз, вы должны отпустить объект n раз.

0 голосов
/ 16 ноября 2011

вы должны удалить кнопку выпуска по крайней мере из одного места (viewDidUnload / dealloc), чтобы избежать вызова дублирования для объекта.

Создание объектов (в вашем случае кнопки) и освобождение их всех за один раз - это хорошо.

...