私はオブジェクト指向プログラミングに慣れていないので、把握に時間がかかっている概念の1つは不変性です。昨夜電球が消えたと思うが、確認したい:
不変オブジェクトを変更できないというステートメントに出くわすと、たとえば次のようなことができるため困惑します。
NSString *myName = @"Bob";
myName = @"Mike";
そこで、不変型NSStringのmyNameを変更しました。私の問題は、「オブジェクト」という言葉がメモリ内の物理オブジェクト、または抽象化「myName」を指すことがあるということです。前者の定義は、不変性の概念に適用されます。
変数については、不変性のより明確な(私にとって)定義は、不変オブジェクトの値は、メモリ内の位置、つまり参照(ポインタとも呼ばれる)を変更することによってのみ変更できるということです。
これは正しいですか、それとも私はまだ森の中で迷っていますか?
NSString
、それは「へのポインタとNSString
不変ではありません」、。私は客観的Cの何も知らないが、私はあなたの例では推測している@"Mike"
の新しいインスタンスを作成しているNSString
し、それを割り当てるのポインタ、myName
。したがってmyName
、指していたオブジェクトは変更せず、指し示していたものだけを変更しました。