8

私は Xcode を初めて使用し、iOS プロジェクトに取り組んでおり、最も基本的なデバッグに苦労しています。具体的には、コードをステップ実行するときにオブジェクトの状態を表示できるようにする必要があります (それはクレイジーではありませんか?) が、Xcode でこれを行う方法を一生理解できません。

私が試みるたびに、目的の内容を表示するために展開できないメモリアドレスが最も遠いようです。また、デバッグ コンソールでポインタを手動で逆参照して、そのオブジェクトの状態を表示する方法もわかりません。

ここで、store.storeHours配列の内容を表示しようとしていますが、まったくうまくいきません。実際、左側のビューは、配列に 0 個のオブジェクトがあり、展開しようとしても何も表示されないことをpo store.storeHours示していますが、コンソールに 7 個のオブジェクトが表示されますが、無駄にメモリ アドレスとして表示されます。

ここに画像の説明を入力

私は狂っているのではなく、何かが足りないだけだと教えてください!

更新:事態はさらに奇妙になります! 変数表示をいきなり「Auto」から「Local」に切り替えると、self.store.storeHours完全にナビゲート可能に!正しい「storeHours」インスタンスまたは何かにアクセスする際に問題があったのではないかと思っています。これは、今表示すると配列内の 7 つのオブジェクトが明確に識別されているためです。言うまでもなく、私が最初に望んでいたように、オブジェクトは拡張可能です。

ここに画像の説明を入力

4

3 に答える 3

8

インスタンスは実際にその情報自体を提供しています。カスタムクラスがメモリアドレス以外のものとして自分自身を出力できるようにするには、descriptionから継承されたメソッドを実装する必要があります (これは実装が行うことです)。NSObjectNSObject

クラスにどのようなプロパティがあるのか​​ わかりませんHoursが、これは次のように簡単です。

- (NSString *)description
{
    return [NSString stringWithFormat:@"Open: %i Close: %i", self.openTime, self.closeTime];
}

NSStringこのメソッドは、オブジェクトを検査するときに確認することが重要だと思われる情報を含むを返すだけで済みます。

%@これは、 で書式指定子を使用するときに、クラスがどのように表現されるかも同じですNSLog()

于 2013-02-27T00:34:18.070 に答える
1

あなたの例では、store.storeHours は空の NSArray です。ですから、当然、中を見ることはできません。

デバッガーでより明確にするために、メソッドを追加してみてください (NSObject から継承)

 - (NSString*) description

そのようなオブジェクトに、Hoursその内容について詳しく教えてくれます。も参照してくださいdebugDescription

于 2013-02-27T00:35:13.593 に答える
0

埋め込む

-(NSString*)description{
    //Return a string in whatever way you like to describe this instance. That is what xcode debugger reads. 
    //This is implemented in the parent to return the address, that's why you see that way.
}
于 2013-02-27T00:35:06.227 に答える