Diciamo che ho un controller di visualizzazione o un controller di finestra, che è (come al solito) il "Proprietario del file" in un file XIB corrispondente.Variabili di istanza IBOutlet nei file di implementazione (.m)
È (come tutti sapete) molto comune avere IBOutlet
s nella classe controller che è quindi possibile connettersi in XIB utilizzando Interface Builder.
Fino ad ora, ho creato variabili di istanza IBOutlet
nei file di interfaccia (.h). Ma (come tutti sapete) gli IBOutlet
s sono molto spesso un meccanismo privato della classe controller; gli estranei non dovrebbero nemmeno saperlo.
Questo è il motivo per cui ora, poiché Objective-C ha recentemente iniziato a offrire la possibilità di farlo, voglio mettere tutti i miei file IBOutlet
nei miei file di implementazione (.m).
Ho provato a farlo e sembra funzionare correttamente. Le mie domande sono queste: Perché funziona? Ho avuto l'impressione che Interface Builder potesse solo visualizzare i file di intestazione della classe, non dare un'occhiata ai loro file di implementazione. Ho sbagliato? Come mai Interface Builder può "vedere dentro" i file di implementazione? Potrebbe essere potenzialmente pericoloso inserire le variabili di istanza IBOutlet
nei file di implementazione?
Si noti che questo è possibile solo quando si utilizza il runtime moderno su Mac, che significa solo 64 bit. Il runtime classico richiede che tutti gli ivars vengano dichiarati nell'intestazione. –