properties - Is there a way to override "property" setters and getters in Swift? -
after reading @property/@synthesize equivalent in swift, became curious how functionality objective c retained.
say have following in objective c:
@interface myclass @property (readwrite) mytype *myvar; @end   this can accessed such dot- , smalltalk-based syntaxes:
type *newvar1 = myclassinstance.myvar; type *newvar2 = [myclassinstance myvar];  myclassinstance.myvar = newvar1; [myclassinstance setmyvar: newvar2];   and if want add additional functionality getters/setters, can this:
@implementation myclass  - (mytype *) myvar {     // more stuff     return self._myvar; }  - (void) setmyvar: (mytype *) newvar {     self._myvar = newvar;     // more stuff }  @end   (see custom setter @property?)
however, the accepted answer above linked question says swift doesn't differentiate between properties , instance variable. so, have following in swift:
class myclass {     var myvar: mytype }   as far know, way access myvar such:
var newvar1 = myclassinstance.myvar;  myclassinstance.myvar = newvar1;   but don't know how customize these getters , setters. is there swift equivalent of objective c @property overrides?
while researching question, happened upon answer, still figured should put here else same question.
yes, according the swift programming language documentation's page on properties, getters , setters can made in similar way how c# tackles problem:
class myclass {     var myplainvar: mytype = mytype()      var mycustomgettervar: mytype {         // more stuff         return self.mycustomgettervar     }      var mycustomgettersettervar: mytype {         {             // more stuff             return self.mycustomgettersettervar         }         set {             // stuff             self.mycustomgettersettervar = newvalue             // more stuff         }     }      var mycustomfancyvar: mytype! {         willset {             // stuff newvalue         }         // actual setting done automatically, no set{}         didset {             // more stuff oldvalue         }     } }   note variables didset must initialized or explicitly unwrapped (using !), , cannot have get reason.
Comments
Post a Comment