假设我已经这样声明了一个 NSString
NSString *myString = [[NSString alloc] initWithString:@"Never Heard"];
NSString *tempString;
tempString = myString;
[myString release];
我的问题是它为什么有效?如您所见,我没有为 tempString 分配。 因此,我认为没有必要发布它。但是如果我尝试分配和初始化 tempString,它会带来错误。
NSString *myString = [[NSString alloc] initWithString:@"Never Heard"];
NSString *tempString = [[NSString alloc] init];
tempString = myString;
[myString release];
我使用 NSString 作为示例,但我实现了不同的类。我是 试图强调内存分配在这里是如何工作的。想澄清和解释吗?
最佳答案
指针只是一个内存地址。您只需创建一个对象,然后将 tempString
指向该对象。和 tempString == myString
。
[myString release]
释放字符串,使两个指针都指向释放的内存。
不要混淆变量和对象。变量只是您用来访问对象的句柄。创建一个新变量并不意味着您正在创建一个新对象。
关于objective-c - 将对象传递给未分配的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5177148/