Я новичок в target-c 2.0 (из .NET c #) и обнаружил свойства.Они очень удобны для работы с управлением памятью (сохранение).
Так что я могу установить переменные в методе init довольно просто, как
@property (retain) NSDate *d1, *d2;
и
@synthesize d1, d2;
-(id)init {
if (self = [super init]) {
// initialize Properties
self.d1 = [NSDate date];
self.d2 = [NSDate date];
}
return self;
}
Иногда я забываю (может быть, из-за моего происхождения .NET) использовать «я».Это выглядит знакомо и не очень похоже на плохое кодирование.Так что я могу пропустить его в будущем снова ...
-(id)init {
if (self = [super init]) {
// initialize Properties
d1 = [NSDate date];
d2 = [NSDate date];
}
return self;
}
Но это приведет к нарушению EXC_BAD_ACCESS, когда свойство будет установлено с использованием self.d1 = [NSDate date];
или извне objXy.d1 = [NSDate date];
Буду признателен, когда компилятор предупредит меня об использовании свойств напрямую, а не через синтезированные сообщения.Это можно легко сделать, назвав экземпляр var отличным от свойства.
Просто интересно, кто-то делает это так или по-другому ...?Мои исследования показали, что это возможно, но мне нужно объявить переменные самостоятельно в заголовочном файле.Для этого я бы использовал префикс (_ зарезервирован для CF), поэтому мне нужно что-то большее, например, XY_ ... хм ... не очень удобно ...
Почему бы не иметь атрибут дляСвойства типа (уникальные), которые будут генерировать экземпляр var с именем, отличным от имени свойства ... @ apple