1

これは、私がここで質問しているとは信じられないほど、とてつもなく単純な質問の 1 つです。しかし、私は困惑しているので、ここに行きます: 私はNSDate将来の特定の時間のために を作成しようとしています. 簡単だと思いましたが、試してみると:

NSDate *destinationDate = [NSDate dateWithTimeIntervalSinceNow:30];

次の行のブレークポイントは、それdestinationDateが「Objective-C オブジェクトではない」ことを示しています。これから、百万の異なるバージョンを試しました:

NSDate *destinationDate = [[NSDate alloc] init];
destinationDate = [NSDate dateWithTimeIntervalSinceNow:30];

これに:

NSDate *destinationDate = [NSDate date];

これに(ここで提案):

NSDate *destinationDate = [[NSDate date] copy];

そして、何も機能しません!それらはすべて「Objective-C オブジェクトではありません」! 見逃しているのは単純で恥ずかしいことだと思いますが、完全に途方に暮れています。誰かが私を助けることができますか?

4

4 に答える 4

1

ここのドキュメントを見ると、NSDate は確かに NSObject であり、もちろんそれは Objective-C オブジェクトです。

これはおそらくデバッガ パネルのバグですが、残念ながら頻繁に発生します。この奇妙なことが起こったときは、常にコンソールを使用してください。ブレークポイントにいるときは、po myVariable変数の内容を確認するために を使用すると、より信頼性が高くなります。

于 2013-09-07T21:55:40.927 に答える
0

NSDate は、apple のドキュメントによると NSObject のサブクラスです。

リストしたメソッド (alloc/init、およびクラス メソッド dateWithTimeIntervalSinceNow:) は有効な用途です。

実際の問題が何であるかを知らずにそれについてこれ以上言うのは難しいですが、ARC を使用していない場合は、正しく保持/リリースされていることを確認してください。

于 2013-09-07T20:16:35.687 に答える
0

ブレークポイントのにも変数を使用していますか? そうしないと、ブレークポイントに到達するまでにオブジェクトが既に解放されている可能性があります。これは、アプリがオブジェクトを必要としなくなったためです。次に、「オブジェクトではありません」というメッセージが表示されます。

于 2013-09-07T20:24:24.247 に答える