Objective-c指针

mie*_*tus 2 iphone pointers release objective-c

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

@interface model : NSObject {
NSMutableArray *tab;
}
Run Code Online (Sandbox Code Playgroud)

当我这样做时:

model1 = [[model alloc]init];
NSMutableArray * tab2 = [model1 tab];
...
some operations
...
Run Code Online (Sandbox Code Playgroud)

我想只删除指向我的标签的指针,它是*tab2,但是当我发布tab2时,标签也会释放.在c ++中,当我清除时,我这样做:

int a =10;
*w = &a;
Run Code Online (Sandbox Code Playgroud)

当我删除指针时

delete w;
Run Code Online (Sandbox Code Playgroud)

变量a仍然在内存中,这没关系.我应该在obj-c中只删除一个指针?

Gra*_*erg 7

在Objective-C的情况下,没有理由删除指针.只是让它超出范围.你没有分配任何新的objets.你没有复制标签.你没有保留它.您只是创建另一个指向原始选项卡对象的指针.如果你愿意,你可以设置,tab2 = nil但这两种方式并不重要.

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