objective-c - 将对象传递给未分配的指针

标签 objective-c pointers

假设我已经这样声明了一个 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/

相关文章:

iphone - iOS数组没有被完全填满

C 编程、函数指针

C# 字符串到长指针

objective-c - 使用 [UIColor colorWithPatternImage :] 为文本创建渐变填充

iphone - 如何以编程方式设置仅垂直滚动

iphone - 内存错误访问 : Questions with releases, 协议(protocol)和委托(delegate)

c++ - 没有合适的默认构造函数可用 - Visual Studio

c - c 中 4x4 矩阵的 getter 问题

c++ - 数组和指针变量的混淆

iphone - iOS:UIImage EXC_BAD_ACCESS