Objective-c dealloc的布尔值

Pet*_*rbo 3 boolean objective-c dealloc

我怎么dealloc一个布尔值?

以下方式解除分配给我一个警告:指向整数转换的不兼容指针从'void*'分配给'BOOL'(又名'signed char')

- (void)dealloc {
    self.booleanVar = nil;
    [super dealloc];
}
Run Code Online (Sandbox Code Playgroud)

也许我应该澄清一下,这是一个从NSObject继承的简单类.

我正在使用你在Cocoa Touch类中看到的self.var = nil模式.假设它是NSString*而应该在dealloc方法中使用self.var = nil还是[var release] ?我在这里有点困惑.

sid*_*yll 10

你不需要这样做.它不是一个对象.这也解释了警告,因为你试图将一个nil指针(基本上是对象的NULL)分配给一个非对象.


关于你的第二个问题,是的.您可以将原始变量视为对象的一部分,因此当它被解除分配时,变量将不再存在.

但是当你有一个NSString *对象时,它只是指向另一个对象的指针.如果你释放前者,指针将被删除,而不是NSString.没有人会指出它,它有点迷失在空中,占据着记忆.因此,在删除指针之前,如果您不再需要该对象,则向其发送一条释放消息.这是在dealloc方法中完成的,因为它被称为"删除"和对象,因此是一个删除所有其他没有用的对象的好地方.