在 iphone 应用程序中遇到超出 NSDate 范围的问题。
我有一个这样定义的接口:
@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 的相同定义可以正常工作。在为其分配值之前,它显示为 nil。啊啊啊