releasing objects inside block
===

This is regarding use of __block for releasing an object inside block;

NSString *str = [SomeObject methodName]; // returned object is autoreleased
[str retain]                             //retaining the object since its auto released 

Now i will be using this str object inside a block. inside block i will be releasing this object.
Do i need to prefix with like __block NSString *str = .., since iam releasing it inside block?
From the rules i understand that if we want to modify an object inside block we need to prefix with __block. But does this rule applies for releasing also?