2

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

4

2 回答 2

11

Class声明为指向 a的事实是struct您应该尝试忽略的实现细节。您应该将其视为引用表示 Objective-C 类的 Objective-C 对象的不透明类型。

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

至于当你发送retain或发送release到一个Class对象时具体发生了什么:什么都没有。每个类对象的保留计数都具有特殊值 -1。当默认实现看到保留计数为 -1 时retainrelease它们什么也不做。

于 2013-07-04T19:36:24.100 回答
4

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

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

于 2013-07-04T17:14:45.477 回答