boolean 值的Objective-c dealloc

标签 objective-c boolean dealloc

我如何解除分配一个 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/

相关文章:

iPhone 或 iPhone 5 位置中的条件语句更新 : method

ios - objective-C :旋转方法不起作用

iphone - 如何查看被释放后正在接收消息的对象

ios - 调用 UIViewController 并且永远不会被释放

objective-c - NSMutableDictionary 内容发布?

iphone - 释放 CGImage (CGImageRef)

java - Setter - 检查值

c# - 更改 boolean 值的默认值

android - readBooleanArray 抛出 RuntimeException ("bad array lengths")

objective-c - 自动化 dealloc/viewDidUnload Objective-C