布尔值的Objective-C解除分配
|
我将如何“ 0”一个布尔值?
下面以这种方式取消分配它会给我一个警告:整数转换的不兼容指针从\'void * \'分配给\'BOOL \'(aka \'signed char \')
- (void)dealloc {
self.booleanVar = nil;
[super dealloc];
}
也许我应该澄清一下,这是从NSObject继承的简单类中获得的。
我使用的是您在Cocoa Touch类中看到的self.var = nil模式。比方说,如果它是NSString *,则应在dealloc
方法中使用self.var = nil或[var release]吗?我在这里有点困惑。
没有找到相关结果
已邀请:
3 个回复
矾醒忻
。没有人会指出它,它有点迷失了,占据了记忆。因此,在删除指针之前,如果不再需要该对象,则向其发送释放消息。这是在dealloc方法中完成的,因为它被称为“ delete”和object,因此是删除不再使用的所有其他对象的好地方。
凸晴
鞋扣蚊冈借
值,则声明如下:
那么您就不需要释放与其关联的任何内存,因为当分配和释放保存该内存的类时,便会分配并释放该内存。所以在dealloc中没有booleanVar的代码会很好。 但是,如果您要谈论的是
的指针,定义如下:
并且想要将该变量设置为非值,则应将其设置为等于
而不是
,因为
用于值指针,
用于对象指针(请参阅:Objective-C中的NULL vs nil)。 但是,如果要释放
指针指向的内存(分配有
或
等),请尝试
C函数(请参见:http://www.cplusplus.com/reference/clibrary/ cstdlib / free /)。 如果您在类接口中向我们展示了booleanVar的属性声明,这将真正清除所有问题,这将告诉我们您到底想做什么,并且会得到完全确定的答案。