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