在课堂上叫“保留”或“释放”有什么作用?

时间:2013-07-04 17:06:58

标签: objective-c

在Objective-C中,我们应该保留还是发布Class类型的变量吗? Class是指向C结构的指针。

2 个答案:

答案 0 :(得分:11)

Class被声明为指向struct的指针的事实是您应该尝试忽略的实现细节。您应该将其视为一个opaque类型,它引用表示Objective-C类的Objective-C对象。

Objective-C中的这些Class对象永远不会被释放。一旦创建,它们就会一直存在,直到进程退出。因此,即使它们是真正的Objective-C对象,您也不需要保留和释放它们。

关于将retainrelease发送到Class对象时的具体情况:什么都没有。每个类对象的保留计数都具有特殊值-1。当retainrelease的默认实现看到保留计数为-1时,它们什么都不做。

答案 1 :(得分:4)

AC结构不是Objective C对象,您不能“保留”或“释放”结构,除非它是您保留和释放的Objective C对象的成员(例如ivar)。 p>

当然,你需要为结构分配空间,无论是在堆栈上还是通过“malloc”(当你完成它时不要忘记“free”)。