Я знаю, что дискуссии о стилях кодирования, как правило, заканчиваются катастрофой и бесконечными пламенными войнами, но это не то, что я хочу достичь. В течение последнего десятилетия я в основном видел два разных стиля кодирования для методов dealloc
в Objective-C. Первым и наиболее распространенным было размещение dealloc
в нижней части файла. Это также стиль, который Apple использует в шаблонах по умолчанию Xcode. Логика этого, похоже, заключается в том, что dealloc
вызывается, когда приближается конец объекта, поэтому конец файла кажется приятной метафорой.Каков ваш предпочтительный стиль кодирования для dealloc в Objective-C?
С другой стороны, пара людей, как правило, ставит dealloc
непосредственно под директивами @synthesize
. Это имеет два основных недостатка, на мой взгляд:
- В верхней части файла захламляется расточной код.
- Труднее найти основные части вашего класса, вам нужно прокрутить вниз.
Огромное преимущество, на мой взгляд, заключается в том, что у вас есть прямая визуальная связь между свойствами и соответствующим сообщением release
.
Другое дело в том, что уже выпущены уже выпущенные переменные. Хотя я не думаю, что это необходимо, особенно в контексте объекта, где вся переменная получает desctructed после завершения dealloc
, я также склоняюсь к нулю переменных. Я привык делать это для переменных в области функций, поэтому я просто согласен с моим стилем кодирования.
Это, как большинство моих классов выглядит следующим образом:
@implementation Bar
@synthesize foo;
- (void)dealloc
{
[foo release], foo = nil;
[super dealloc];
}
// Initializers and other methods…
я уже упоминал пару плюсов и минусов. Что вы думаете об этой теме? Какой стиль кодирования вы используете в dealloc
и почему? Есть ли другие плюсы и минусы, о которых я забыл упомянуть?
Я не хочу начинать пламенную войну здесь. Я просто хочу знать, какой стиль вы используете, и если у вас есть конкретные причины для этого или если это не важно для вас в конце.
Eventho Вы не хотите, чтобы люди начали обсуждения и пламя, это произойдет с такими вопросами. – Younes