1

xcodeに次のコードがあり、forループで宣言されたローカルオブジェクト「ReaderDocumentLink * link」である「link」の内容を調べたいので、「result = [selfannotationLinkTarget:link」の行にブレークポイントを設定します。 。辞書];" 以下に示すように:

-(id)singleTap:(UITapGestureRecognizer *)recognizer
{
    id result = nil; // Tap result object

    if (recognizer.state == UIGestureRecognizerStateRecognized)
    {
        if (_links.count > 0) // Process the single tap
        {
            CGPoint point = [recognizer locationInView:self];

            for (ReaderDocumentLink *link in _links) // Enumerate links
            {
                if (CGRectContainsPoint(link.rect, point) == true) // Found it
                {
                    result = [self annotationLinkTarget:link.dictionary]; 
                    break;
                }
            }
        }
    }

    return result;
}

「polink」を試しましたが、動作しません。(以下のようにエラーを報告します:

エラー:「リンク」のタイプは不明です。宣言されたタイプにキャストして使用します

エラー:式の解析中に1つのエラーが発生しました

では、「リンク」オブジェクトの詳細を印刷するにはどうすればよいでしょうか。link.dictionaryの内容も含みます。ありがとう。

4

3 に答える 3

1

Xcode は、ログ ブレークポイントの概念を追加しました。それがOPが求めているものです。そして彼は、その最大の停止点の 1 つに遭遇しました。何かを行う記述メソッドを持つ型では、po を解放する必要があります。まさにこの理由で、これらをあまり使用しません。検査したいコードにまだ多くの整数型があります。

アイテムをブレークポイント内のオブジェクトに変えることもできますが、それも面倒です。

リンクはここで機能するはずです。範囲外の行で po を実行しようとしている可能性がありますか?

于 2013-01-20T03:29:13.130 に答える
0

ここでうまくいくはずだという事実として、私はロブに同意します。

しかし、特に「ドット構文」では、「po」で奇妙なことが起こるのを見てきました。
したがって、試行po link.dictionaryして失敗した場合はpo [link dictionary];、「;」の有無にかかわらず実行することをお勧めします。違いはないと思います。(ドット構文が完全に機能する場合と機能しない場合がある理由はわかりません)

また、「po」でタイプミスをしてエラーメッセージが表示された場合もありますが、失敗した後に「po」を実行しようとしても、追加して続行します(または、アプリを強制終了しません)。思い出してください)そして再びそのブレークポイントに行きます。

linkそしてもちろん、スコープ内で「po」を実行していることを確認してください。

何も機能しない場合は、Xcodeを閉じてみてください。解決策になることもあります。

于 2013-01-20T03:41:51.200 に答える
0

NSLogの各プロパティのいずれかReaderDocumentLink

または、descriptionmdthod を無効にしReaderDocumentLinkて使用しますNSLog(@"%@",link):

于 2013-01-20T03:25:29.787 に答える