В книге "iOS6 by Tutorials" Рэя Вендерлиха есть очень хорошая глава о написании более "современного" кода Objective-C. В одном разделе книги описывают, как переместить iVars из заголовка класса в файл реализации. Поскольку все iVars должны быть частными, это, по-видимому, правильно.
Но до сих пор я нашел 3 способа сделать это. Все делают это по-другому.
1.) Поместите iVars под @implementantion внутри блока фигурных скобок (так оно сделано в книге).
2.) Поместите iVars в @implementantion без блока фигурных скобок
3.) Поместите iVars внутри частного интерфейса над @implementantion (расширение класса)
Все эти решения, кажется, работают нормально, и до сих пор я не заметил никакой разницы в поведении моего приложения. Я думаю, что нет "правильного" способа сделать это, но мне нужно написать несколько руководств, и я хочу выбрать только один способ для моего кода.
В каком направлении я должен идти?
Изменить: Я говорю только об iVars. Не свойства. Только дополнительные переменные, которые объект нуждается только для себя и которые не должны подвергаться внешнему воздействию.
Образцы кода
1)
#import "Person.h"
@implementation Person
{
int age;
NSString *name;
}
- (id)init
{
self = [super init];
if (self)
{
age = 40;
name = @"Holli";
}
return self;
}
@end
2)
#import "Person.h"
@implementation Person
int age;
NSString *name;
- (id)init
{
self = [super init];
if (self)
{
age = 40;
name = @"Holli";
}
return self;
}
@end
3)
#import "Person.h"
@interface Person()
{
int age;
NSString *name;
}
@end
@implementation Person
- (id)init
{
self = [super init];
if (self)
{
age = 40;
name = @"Holli";
}
return self;
}
@end