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: 
If the properties are only used by the subclass, they should be defined in the subclass (not the parent class) and the subclass should release them within it's -(void)dealloc function. You'd have something like this:

```
- (void)dealloc
{
   [username release];
   [password release];
   [super dealloc];
}

```

Note that we don't call dealloc on the properties! We just call "release" which signifies that we no longer will be using them and the system can clean them up (providing nobody else is using them).
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.