我们是否总是必须分配一个带有保留属性的@属性?

Do we always have to allocate a @property with the retain attribute?

我了解到,如果 @property 具有属性 retain,则应始终在 dealloc 方法中释放它。但是如果程序从不为 属性 分配内存,这意味着我们释放了一个未分配的对象,对吧?这是否意味着 属性 必须 init 方法中分配?

But if the program never allocates memory for the property this means we release an unallocated object, right?

错了。如果您在 dealloc 中说 [self->myVar release],则 myVar 已被赋值或尚未赋值:

  • 如果有,现在发布,就是你想要的

  • 如果没有,那就是 nil,什么也没有发生,也没有造成任何伤害,因为发给 nil 的消息没有任何作用。