В документации Apple указано, что объекты NSDate являются неизменяемыми, что, как я полагаю, означает, что, как только они инициализируются значением, их нельзя / нельзя изменять.
Однако в следующем коде мне нужно, чтобы NSDate было одним из двух возможных значений, поэтому, естественно, я мог бы использовать:
for (class* object in array) {
if (i == 0) {
NSDate* fromDate = //...a date
} else {
NSDate* fromDate = //...a different date
}
//Use fromDate
i++
}
Насколько я знаю, это недопустимо, потому что использование fromDate вне блока if находится вне области видимости.
Решение обычно будет:
for (class* object in array) {
NSDate* fromDate = [[NSDate alloc] init];
if (i == 0) {
fromDate = //...a date
} else {
fromDate = //...a different date
}
//Use then release fromDate
i++
}
Однако, согласно Apple Docs, когда NSDate получает 'init', он инициализируется с текущей датой, и, поскольку он неизменный, я не могу переназначить его.
Что здесь делать правильно? Просто скопировать весь мой код в блоки if дважды? Или я неправильно понял термин неизменный? Или, может быть, мне нужно сохранить после назначения в первом примере?
спасибо