私は iOS アプリを開発しましたが、デバイスとシミュレーターの両方を使用して Xcode でデバッグしているときに、一度呼び出されるメソッドに設定されている場合でも、いくつかのブレークポイントに複数回到達することがあることがわかりました。
たとえば、通知センターの を呼び出すコード行にブレークポイントを設定するpostNotificationName:
と、このブレークポイントには 1 回到達しますが、そのような通知の受信側に設定したブレークポイントには 2 回到達します。そしてそれは同じスレッドです。
同様に、return
オブジェクトを返すメソッドの行にも、メソッドが 1 回だけ呼び出された場合でも、最初にnil
オブジェクトが返す値を指定して複数回到達し、次にオブジェクトが後続のブレークポイント停止で期待値を取得することが時々あります。 . また、ブレークポイントも同じスレッドを示します。
なぜこれが起こっているのでしょうか?私は何か間違ったことをしていますか、それとも別の説明がありますか?
ありがとう
編集:反対のシナリオを見つけています...sqlite3
操作を実行するメソッドを呼び出します:テーブルからいくつかの行を選択し、メソッドは取得した行に対応するオブジェクトを含む配列を返すことを目的としています。メソッドの先頭にブレークポイントを設定し、return
行に別のブレークポイントを設定しました。メソッドを 1 回呼び出すと、メソッドの先頭のブレークポイントで 1 回停止しますが、そのreturn
行で 2 回停止します。1回目は返したい配列が期待値、2回目は となるnil
ので、最後にnil
メソッドから戻り値を取得します。行のブレークポイントはreturn
、最初は「スレッド 1: ブレークポイント 15.1」であり、2 回目は「スレッド 1: ブレークポイント 15.2」です。この振る舞いがわかりません。