Внутри самого класса вы можете напрямую изменять приватные переменные. Подумайте о методах доступа, главным образом, для предоставления общедоступного интерфейса и избегания других классов для непосредственного изменения вашего объекта. Это происходит от объектно-ориентированной парадигмы, а не от управления памятью.
Что касается релиза, то лучше четко понять, как он работает, используя счет сохранения и что влияет на этот счет. Некоторые методы, такие как init extension, сохраняют объект, а некоторые - нет. Множество статических методов, которые возвращают новый готовый к использованию объект, такой как imageWithNamed: возвращают объект автоматического выпуска, который вы должны явно сохранить для владения им.
Лучше всего освобождать и устанавливать в ноль, когда вы передаете право собственности другому объекту (например, массиву)
ех.
NSString *myName = @"zgueb";
NSArray *myFamily = [[NSArray alloc] initWithObjects:myName, nil];
// now myName is retained by myFamily, i can release it
[myName release];
myName = nil;
Это понятно.
Винс.