Objective-C: rendendo Ivars @public o @synthesing @properties per loro?Quando dovrei usare le proprietà?

StackOverflow https://stackoverflow.com/questions/8984921

  •  13-11-2019
  •  | 
  •  

Domanda

Ho alcune variabili di istanza nella mia classe che vorrei essere accessibile ovunque.Come così:

@interface SomeObject : NSObject
{
    @public
        NSString *someString;
}
@end

@implementation SomeObject
@end
.

Posso accedere alla proprietà dall'istanza utilizzando la sintassi -> come di seguito, come farei in C ++:

someObjectInstance->someString
.

Dovrei fare una proprietà per someString quando tutto ciò che voglio è che sia accessibile dal mondo esterno?Creerei un @property per someString nella mia interfaccia e @synthesize nella mia implementazione, che mi consentirebbe di accedervi utilizzando la sintassi DOT.

È stato utile?

Soluzione

In generale, se si desidera esporre i dati, è necessario utilizzare le proprietà.Effettuare le variabili di istanza Il pubblico è una cattiva idea in generale.

Altri suggerimenti

È il modo più orientato agli oggetti per farlo perché quando si utilizza una proprietà è possibile modificare il getter / Setter in seguito (invece di averlo sintetizzato) se lo volessi fare qualcos'altro.

Sì, perché ciò che stai facendo quando la rendi un @property sta dirigendo la gente che lo utilizza per chiamare i metodi generacodicitagCode e setSomeString, in effetti.Anche se sei generatoDicetagCodegnandoli, è meglio che la qualità del tuo codice utilizzi i metodi, perché potrebbe cambiarli se è necessario.Se stai solo usando il riferimento del puntatore, se ti ritrovi a dover bisogno di intercettare gli accessi, non sarai in grado di farlo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top