vorrei sapere quale posto è migliore per collocare i IBOutlets da storyboard:IBOutlet best practice
a) Nel file di intestazione (h)
b) In un'estensione classe creata sul. m file di
Grazie
saluti
vorrei sapere quale posto è migliore per collocare i IBOutlets da storyboard:IBOutlet best practice
a) Nel file di intestazione (h)
b) In un'estensione classe creata sul. m file di
Grazie
saluti
Supponendo che questo è per un controller di vista, l'opzione b è migliore in quanto non si dovrebbe esporre la prese pubblicamente fo r altre classi con cui interagire direttamente. Dovrebbero essere considerati le tue conoscenze private. Il controller dovrebbe esporre un'interfaccia diversa e più appropriata.
Se si tratta di una vista, è un po 'più grigio il modo in cui dovresti affrontare il problema poiché MVC ti porta ad esporre le prese per consentire al controller di utilizzarle. MVVM ti porta a nascondere i punti vendita in modo che la vista passi un oggetto del modello di vista e configuri internamente le prese.
L'estensione di classe è il posto migliore se non si desidera esporre pubblicamente tale presa. Il tuo .h
dovrebbe essere pulito e pulito e dovrebbe contenere solo quei metodi o proprietà che sono pubblici (disponibili per altri programmatori). In questo modo non si confondere il vostro compagno di squadra non avendo Ivars inutili e metodi di decelerazione in .h
file di
E 'tutto su come gestire il codice e fare meno confusione, altrimenti non ci sono metodi/proprietà in Objective-C
privatiAnche se si controlla qualsiasi campione di mela seguono lo stesso schema. per esempio. LoadingStatus.m ha codice
#import "LoadingStatus.h"
@interface LoadingStatus()
@property (nonatomic, strong) UIActivityIndicatorView *progress;
@property (nonatomic, strong) UILabel *loadingLabel;
@end
Da Resource Programming Guide: Nib Files di Apple:
Outlet sono generalmente considerati privato alla classe che definisce; a meno che non vi sia un motivo per esporre pubblicamente la proprietà, nascondere le dichiarazioni di proprietà come un'estensione di classe.
Il @interface può apparire sia nel file .h (proprietà pubbliche) e il file .m (proprietà private). Gli IBOutlet devono essere dichiarati nel file .m.
Se siete interessati leggere questo topic.
Cheers!
Devi tenere a mente che .h è un'intestazione pubblica.
Quindi posiziona il tuo IBOutlet
lì se dovrebbero essere accessibili da altre classi.
Tuttavia, anche se è possibile farlo. Direi che esporre lo IBOutlet
in un'intestazione pubblica non è una buona pratica (dal punto di vista dell'orientamento agli oggetti) poiché stai esponendo alcuni dettagli di implementazione che dovrebbero essere visibili solo a chi è interessato.
In breve, posizionare il numero IBOutlet
in un'estensione di classe nello .m
è una buona pratica.
se si desidera accedere a quella presa da altri VC quindi .h altrimenti .m –
@Bhavin best practice potrebbe portare a non voler accedere alla presa da un altro VC – Wain