我找到了其他人编写的代码的一部分。
@interface Fly : CCSprite
{
id var1;
id var2;
}
然后在.m文件中
- (void) dealloc
{
[var1 release];
[var2 release];
// don't forget to call "super dealloc"
[super dealloc];
}
这是正确的吗?我不认为可以释放id类型。也许isa变量...你能解释一下为什么这个被释放了吗?或者你能帮我解释一下为什么这么糟糕?
答案 0 :(得分:3)
id
可以保留任何对象,当您向其发送消息时,它可能会也可能不会响应它。如果它确实响应release
(Cocoa中的大多数类都做,因为它们是子类NSObject
),它将被释放。根据正在运行的操作系统,如果对象没有响应消息(iOS抛出异常,OS X日志并继续),则可能会出现异常,但可以在运行时使用respondsToSelector:
检查
答案 1 :(得分:1)
id是动态类型,它可以引用任何对象。因为它是一个对象,它可以被释放和解除分配
答案 2 :(得分:0)
代码似乎对我而言。
id var1
只是声明一个通用对象变量。它可以被释放,因为它只是内存中的一个对象
然后在解除分配期间从内存中释放两个变量