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];
}

```
Short answer: In the base class.

Long answer: Objects are "owned" by other objects. To own an object, you have to allocate or retain it (with retain, alloc, new, or copy). The owner is responsible for disposing of the memory with a release or autorelease. There should be one release/autorelease for every allocation/retain. 

It is Cocoa convention that only methods that begin with "new" and "copy" return objects that have been allocated/copied/retained but are not owned by the method's receiver. The owner is then the object that called the "new" or "copy" function.