2012-10-19 1 views
0

Теперь я разрабатываю приложение IOS с XCode4.2. Я создаю UIButton, когда приложение запускается. так что мое кодирование здесь:Освобождение всех кнопок, динамически созданных в Objective-C

- (IBAction)btnSync_Click:(id)sender { 
    float j=10.0; 
    for(int i=1;i<5;i++){ 
     UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
     button.frame = CGRectMake(j, 170, 100.0, 50.0); 
     [button setTitle:[NSString stringWithFormat:@"btn%d",i] forState:UIControlStateNormal]; 
     [button addTarget:self action:@selector(btn_Click:) forControlEvents:UIControlEventTouchUpInside]; 
     [fra_btn addSubview:button]; 
     j=j+110; 
    } 
} 

- (IBAction)btn_Click:(id)sender{ 
    UIButton *btntmp=(UIButton*)sender; 
    NSLog(btntmp.titleLabel.text); 
} 

я хочу знать, что я все еще нужно освободить все кнопки внутри fra_btn (View)? если да, как я должен это делать? мой проект - проект ARC.

Лучшие Rgds, пеленгации

ответ

4

Нет, вам не нужно, чтобы освободить эти кнопки и любые другие объекты из базы CocoaTouch созданных программно под АРК.

1

Как не использовать Alloc - Init для инициализации кнопки вам не нужно, чтобы освободить любую вещь

0

В дополнение к Wolvorins ответ:

только методы, только методы, которые начинаются с init, new, или copy предположим, что вы являетесь владельцем объекта, поэтому только объекты, которые вы получили с помощью метода, начинающегося с вышеуказанных трех ключевых слов, вам нужно освободить. Все остальные методы должны быть автореализованы. (Там может быть паршивым программист, который игнорирует это правило, но Apple, не паршиво, так что вы смело можете применить это к классам какао.)

Это (возможно, «очевидно») также относится к alloc, copy и new.

Но Tomasz Wojtkowiak является правильным. ARC - Automatic Reference Counting, поэтому вам нечего отпускать, это именно то, что нужно для ARC.

0

в АРК, однако релиз воздержался, так что не вопрос освобождения любого iVar.And согласно вопросу UIButton тут не выделяется с помощью Alloc, init.Similar Примером этого может быть, когда вы выделяете строку сказать [NSString stringWithFormat:@""]; или [NSArray arrayWithObjects]; которые являются автоматическими. Выделение их приведет к сбою приложения в этой строке

0

Вы не можете отпустить кнопку, созданную с тех пор, как вы не использовали alloc. Так что он не выделял память. Надеюсь, это вам поможет.