@property/@synthesize に相当する swiftを読んだ後、Objective C の機能がどのように保持されているのか知りたくなりました。
Objective Cに次のものがあるとします:
@interface MyClass
@property (readwrite) MyType *myVar;
@end
これには、ドットおよび smalltalk ベースの構文を使用して、次のようにアクセスできます。
Type *newVar1 = myClassInstance.myVar;
Type *newVar2 = [myClassInstance myVar];
myClassInstance.myVar = newVar1;
[myClassInstance setMyVar: newVar2];
これらのゲッター/セッターに機能を追加したい場合は、次のようにします。
@implementation MyClass
- (MyType *) myVar
{
// do more stuff
return self._myVar;
}
- (void) setMyVar: (MyType *) newVar
{
self._myVar = newVar;
// do more stuff
}
@end
( @property? のカスタム セッターも参照してください)
ただし、上記のリンクされた質問に対する受け入れられた回答は、Swift がプロパティとインスタンス変数を区別しないことを示しています。だから、私はSwiftで次のものを持っているとしましょう:
class MyClass {
var myVar: MyType
}
私の知る限り、アクセスする唯一の方法myVar
は次のとおりです。
var newVar1 = myClassInstance.myVar;
myClassInstance.myVar = newVar1;
しかし、これらのゲッターとセッターをカスタマイズする方法がわかりません。Objective C の@property
オーバーライドに相当する Swift はありますか?