我如何解除分配
一个 boolean 值?
在下面以这种方式解除分配给了我一个警告:从'void *'分配给'BOOL'(又名'signed char')的整数转换指针不兼容
- (void)dealloc {
self.booleanVar = nil;
[super dealloc];
}
也许我应该澄清一下,这是一个从 NSObject 继承的简单类。
我正在使用您在 Cocoa Touch 类中看到的 self.var = nil 模式。假设它是一个 NSString* 而不是我应该在 dealloc
方法中使用 self.var = nil 或 [var release] 吗?我在这里有点困惑。
最佳答案
你不需要这样做。它不是一个对象。这也解释了警告,因为您试图将一个 nil 指针(基本上是对象的 NULL)分配给非对象。
关于你的第二个问题,是的。您可以将原始变量视为对象的一部分,因此当它被释放时,变量将不再存在。
但是当你在一个对象中有一个 NSString *
时,它只是一个指向另一个对象的指针。如果你 dealloc 前者,指针将被删除,而不是 NSString
。没有人可能会指出它,它有点迷失在空气中,占据着内存。因此,在删除指针之前,如果您不再需要该对象,请向它发送一条释放消息。这是在 dealloc 方法中完成的,因为它被称为“删除”和对象,因此是删除所有其他不再使用的对象的好地方。
关于 boolean 值的Objective-c dealloc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6344162/