Objective c 这些陈述在目标C中正确吗?
可以把这些语句称为Objective c 这些陈述在目标C中正确吗?,objective-c,Objective C,可以把这些语句称为 [self release]; [super release]; [AClass release]; 当对象初始化失败时,实际上鼓励使用。这是造成这种情况的主要原因: if (self = [super init]) 或 另一方面 [AClass release] 似乎调用了元类的实例,但没有任何效果 谢谢Josh Caswell指出我的错误 最后 [super release] 应该像这样工作 [self release] 因为两者都将调用NSObject的释
[self release];
[super release];
[AClass release];
当对象初始化失败时,实际上鼓励使用。这是造成这种情况的主要原因:
if (self = [super init])
或
另一方面
[AClass release]
似乎调用了元类的实例,但没有任何效果
谢谢Josh Caswell指出我的错误
最后
[super release]
应该像这样工作
[self release]
因为两者都将调用NSObject的释放方法。请参阅:
前两个
最后一个是无效的。(我假设aClass是一个类而不是一个对象存在一个包含[super release]
的类
还有一些包含[自发布]
的代码示例
当对象初始化失败时,这些构造可能很有用
您询问的第三个公式(
[AClass release]
)似乎会导致错误。类对象实际上是其元类的一个实例,它采用了NSObject
协议(其中声明了release
),这是一个有效的语句,尽管没有意义(它们也是不朽的).你说得对。我以为对类调用release会尝试调用class方法,而不是该实例的方法。[AClass release]
是有效的;类对象本身就是其元类的实例。AClass本身是类名,而不是类实例。[AClass release]不会导致任何编译器错误或警告。
[super release]
[self release]