私は最近、Objective C の学習を始めましたが、いくつかの基本的なメモリの問題について混乱しています。たとえば、チュートリアルでこれを見ました:
- (void) setVin: (NSNumber*)newVin {
[vin release];
vin = [[NSNumber alloc] init];
vin = newVin;
}
最初に vin にスペースを割り当て、それを newVin に割り当てます。では、vin に新しいスペースを割り当てる意味は何でしょう。割り当てた後、漏れていませんか?
そしてもう一つは
NSString* s1 = [[NSString alloc] init];
NSString* s2 = [[NSString alloc] init];
これら 2 つの文字列のアドレスを出力したところ、これら 2 つのポインターが同じアドレス値を保持していることがわかりました。それらが同じ値(空の文字列だと思います)を保持しているため、コンパイラはそれらを同じアドレスに割り当てることにしましたか?それとも別の問題ですか?