Вы используете self, когда ссылаетесь на @property.
Обычно это был @ synthesize'd.
Вы не используете self, если ссылаетесь на «приватную» переменную. Как правило, я использую свойства для элементов пользовательского интерфейса, таких как UIButtons или для элементов, которые я хочу легко получить доступ из других классов.
Вы можете использовать модификаторы @ private , @protected для явного обеспечения видимости. Однако вы не можете использовать закрытые методы, которых нет в Objective-C.
Часть о nil, release и dealloc не связана с использованием "self". Вы освобождаете то, что вы сохранили, вы ничего не сохраняете.
Вы должны прочитать руководство Objective-C , оно хорошо написано и очень поучительно.