iphoneアプリでNSDateの範囲外に問題があります。NSDate of scope
私はこのように定義されたインタフェースがあります。私は、この持っている実装で今
@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として表示されます。 Arghhh