我不知道如何删除指针而不是对象,例如: 我有一些课:
@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/