在Objective-C中,我们应该保留还是发布Class
类型的变量吗? Class
是指向C结构的指针。
答案 0 :(得分:11)
Class
被声明为指向struct
的指针的事实是您应该尝试忽略的实现细节。您应该将其视为一个opaque类型,它引用表示Objective-C类的Objective-C对象。
Objective-C中的这些Class
对象永远不会被释放。一旦创建,它们就会一直存在,直到进程退出。因此,即使它们是真正的Objective-C对象,您也不需要保留和释放它们。
关于将retain
或release
发送到Class
对象时的具体情况:什么都没有。每个类对象的保留计数都具有特殊值-1。当retain
和release
的默认实现看到保留计数为-1时,它们什么都不做。
答案 1 :(得分:4)
AC结构不是Objective C对象,您不能“保留”或“释放”结构,除非它是您保留和释放的Objective C对象的成员(例如ivar)。 p>
当然,你需要为结构分配空间,无论是在堆栈上还是通过“malloc
”(当你完成它时不要忘记“free
”)。