我最近开始学习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];
当我打印这两个字符串的地址时,我看到这两个指针拥有相同的地址值。是因为它们拥有相同的值(我认为是空字符串),编译器决定将它们分配给相同的地址吗?或者是另一个问题?