Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 这些陈述在目标C中正确吗?_Objective C - Fatal编程技术网

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]