Возникли проблемы с выходом за рамки NSDate в приложении для iphone.
У меня есть интерфейс, определенный так:
@interface MyObject : NSoObject {
NSMutableArray *array;
BOOL checkThis;
NSDate *nextDue;
}
Теперь в реализации у меня есть это:
-(id) init
{
if( (self=[super init]) ) {
checkThis = NO;
array = [[NSMutableArray alloc] init];
nextDue = [[NSDate date] retain];
NSDate *testDate = [NSDate date];
}
return self;
}
Теперь, если я прослежу через инициализацию, прежде чем я на самом деле назначу переменные, checkThis показывает, что это логическое значение. массив показывает как указатель 0x0, потому что он еще не назначен. Но nextDue показывается как «вне области видимости». Я не понимаю, почему это выходит за рамки, но другие переменные - нет.
Если я прослеживаю код до тех пор, пока не назначены переменные, массив теперь отображается как правильно назначенный, но nextDue по-прежнему выходит за рамки. Интересно, что переменная testDate назначается просто отлично, и отладчик показывает это как правильную дату.
Еще один интересный момент: если во время отладки я наведу указатель мыши на переменную testDate, она отобразится как тип «NSDate *», чего я и ожидал, поскольку это его определение. Тем не менее, nextDue, который для меня определен так же, отображается как _NSCFDate *.
Любое прибегание к поиску, которое я проводил по этому вопросу, говорило, что проблема заключается в сохранении, но на самом деле оно выходит за рамки, прежде чем я даже попытаюсь присвоить переменную.
Однако, в другом классе, то же определение для NSDate работает нормально. Он показывает как ноль, прежде чем ему будет присвоено значение. Arghhh