建议的方法是什么?我应该先拨打超级dealloc还是最后一次,还是不重要?
- (void)dealloc
{
[super dealloc];
[orderNumber release];
[orderDate release];
}
当谈到像didViewLoad这样的重写方法时 - 我应该先调用super还是last?
答案 0 :(得分:4)
始终致电[super dealloc]
最后,否则您可能很容易遇到麻烦,因为您正在处理陈旧的对象。
使用didViewLoad,您通常在自己的代码之前调用它,因为您希望之前执行标准初始化内容。我已经看到Apple的代码中的示例根本没有调用超级实现,所以也许没有太多的事情发生。
答案 1 :(得分:2)
在这种情况下,在释放所有属性/ iVars后调用super。对于viewDidLoad / willAppear / etc。我通常先称之为超级。当您的自定义类依赖于由super创建的对象时,顺序很重要。对于默认的viewDidLoad,情况并非如此,因此它是首选项(我相信)。
答案 2 :(得分:0)
没有一般规则 - 您选择覆盖该方法,它有什么作用?您希望它在自定义实现之前或之后发生吗?
我们知道[super dealloc]完全破坏当前对象,因此任何代码都是错误的。因此,在这种情况下,最后调用[super dealloc]。
答案 3 :(得分:0)
指针orderNumber
和orderDate
保留在您的对象中。
[super dealloc]
释放您的对象(又名self
)。
取消分配对象后,您不得依赖其中的内容(例如orderNumber),并在取消分配之前使用它们所执行的值。
因此,在释放自我对象之前解除分配成员。
对于init
函数,情况正好相反 - 在构造对象 之前,无法初始化指针,因此在初始化成员之前会出现[super init]
。 / p>
答案 4 :(得分:0)
关于viewDidLoad
(等),你做任何有用的事情。如果你有想要在超类做它之前发生的事情,那么你在调用超类方法之前就已经完成了它,同样也是你想要在之后发生的事情。
如果您不知道您的代码是在之前还是之后运行,那么它可能无关紧要。