iphone - Objective-c 指针

标签 iphone objective-c pointers release

我不知道如何删除指针而不是对象,例如: 我有一些课:

@interface model : NSObject {
NSMutableArray *tab;
}

当我这样做时:

model1 = [[model alloc]init];
NSMutableArray * tab2 = [model1 tab];
...
some operations
...

我只想删除指向我的选项卡的指针,即 *tab2,但是当我释放 tab2 时,选项卡也会释放。在 C++ 中,当我清除时,我会这样做:

int a =10;
*w = &a;

当我删除指针时

delete w;

并且变量 a 仍在内存中,这没关系。我应该在 obj-c 中做什么来只删除一个指针?

最佳答案

在您使用 Objective-C 的情况下,没有理由删除指针。就让它超出范围吧。您没有分配任何新对象。您没有制作选项卡的副本。你没有保留它。您只是创建另一个指向原始选项卡对象的指针。如果您愿意,可以设置 tab2 = nil 但无论哪种方式都并不重要。

在你的第二个 C++ 示例中,我不确定,但你可能会陷入未定义的行为,因为你给出的代码示例实际上适用于你测试的编译器!删除不是使用 new 创建的指针是无效的 C++。

关于iphone - Objective-c 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6540601/

相关文章:

ios - Uncrustify:嵌套 block 索引错误

iphone - UITableViewCell 上的自动调整大小不起作用

iphone - 无法将 .mp4 视频文件保存到 iphone 相机胶卷?

iphone - 从包含其他 View 的 UIView 导出高分辨率图像

iphone - CLLocationDegrees 初始化

c程序,指针

iphone - 如何保存两张图片,其中一张允许旋转、缩放和移动

iphone - FFMpeg 编码不适用于 iPhone 3g 但 iPhone 4 运行良好

c - 将返回值分配给 int 数组

C++修改对象指针指向但不保留值