2011-12-21 13 views

Odpowiedz

51

"Generator interfejsów".

Przed Xcode 4 pliki interfejsu (XIBs i NIB) były edytowane w osobnym programie o nazwie Interface Builder, stąd prefiks.

IBAction jest zdefiniowany jako void, a IBOutlet na nic. To tylko wskazówki do konstruktora interfejsu podczas analizowania plików, aby były dostępne dla połączeń.

Wystarczy dodać odwołanie, wewnątrz zestaw klas AppKit/NSNibDeclarations.h znajdziesz nich:

#ifndef IBOutlet 
#define IBOutlet 
#endif 

#ifndef IBAction 
#define IBAction void 
#endif 

Tak, rzeczywiście, kod tak:

@interface ... 
{ 
    IBOutlet NSTextField *label; 
} 
- (IBAction)buttonPressed:(id)sender; 
@end 

zostanie przekształcona:

@interface ... 
{ 
    NSTextField *label; 
} 
- (void)buttonPressed:(id)sender; 
@end 

Przez preprocesor, nawet zanim kompilator go zobaczy. Te słowa kluczowe działały tylko jako wskazówki do konstruktora interfejsu.

+3

Wystarczy dodać, że "IBAction" to "void". Jest to coś w rodzaju znaczników, aby twórca interfejsu mógł zobaczyć, który kod metod ujawnia połączenia z przyciskami i innymi kontrolkami. Nie jestem pewien co do 'IBOutlet', ale jestem pewien, że jest podobny do' IBAction', aby twórca interfejsu mógł zobaczyć, jakie elementy sterujące może łączyć się z kodem. – Eimantas

+1

Narzędzie wciąż nosi nazwę Interface Builder; to już nie istnieje jako oddzielna aplikacja. Szkoda, bo naprawdę uwielbiam tę ikonę. – BoltClock

+0

@Eimantas Redagowałem odpowiedź, aby zanotować w tym samym czasie, gdy pisałeś komentarz :-) dziękuję za skierowanie go też – sidyll

4

IB oznacza budowniczego interfejsów, gdy łączysz obiekty za pomocą kreatora interfejsów.

0

IBAction i IBOutlet są interfejsami Stałe konstruktora IBOutlet: Klasa Controller może odwoływać się do obiektu w pliku nib za pomocą specjalnej stałej o nazwie IBOutlet.

IBActions: Obiekty interfejsu w pliku końcówki można ustawić, aby wyzwalały określone metody w klasie kontrolera, używając IBAction jako metody zwracania metody.