Question: My base class has properties that are used by a subclass. where should Release be called? In the original base class or the class that inherits it?

Answer: 
I would say that each class manages it's own properties. So subclass class should release it's properties and base class releases it's own.

Once subclass is released it will not access base class properties, it technically does not exists anymore. Standard way of writing dealloc is:

```
- (void)dealloc
{
   // release my stuff, after this line
   // I don't exist and do not need to access any of my properties
   [super dealloc];
}

```
In a given block, the number of calls to retain, copy, alloc should be balanced by calls to release, autorelease.
If you retain something in the subclass, release it in the subclass, and if in the base class...

I'm paraphrasing that from memory from an article on stepwise.