这些陈述在目标C中是否正确?

时间:2011-11-30 06:21:57

标签: objective-c

可以调用这些语句吗?

[self release];

[super release];

[AClass release];

3 个答案:

答案 0 :(得分:1)

[self release]
当对象初始化失败时,实际上鼓励

。这是背后的主要原因:

if (self = [super init])

self = [super init];
if (self)
另一方面

[AClass release]

似乎调用了元类的实例,它根本没有任何效果。

感谢Josh Caswell指出我的错误。

最后

[super release]

应该像

一样工作
[self release]

因为两者都会调用NSObject的发布方法。

答案 1 :(得分:1)

参见: Is calling [self release] allowed to control object lifetime? 对于前两个。

最后一个无效。 (我假设aClass是一个类而不是一个对象

答案 2 :(得分:1)

Apple sample code包含[super release]

并且Apple documentation包含包含[self release]的代码示例。

当对象初始化不成功时,这些构造可能很有用。

你询问的第三个表述([AClass release])似乎会导致错误。