1

XCTest 中 (およびその後の通常の実行中) にブレークポイントにいる間に、何か... 奇妙なことに遭遇しました。以下のスクリーンショットが私の問題を説明していると思います:

LLDB の 2 つの呼び出し、1 つの読み取り <code>po @

なぜ主張するのAn Objective-C constant string's string initializer is not an arrayですか?@"" NSStringリテラル シュガーをNSStringC 文字列のイニシャライザに変換しようとして失敗したように見えますが、なぜでしょうか?

また、¢文字またはその Unicode エスケープ シーケンスを使用して他の多くの文字列をテストしましたが、すべて同じ結果になりました。

4

2 に答える 2

2

それはバグのように見えます。http://bugreporter.apple.comにファイルしてください。

静的な文字列の作成にはコンパイラの魔法が必要であり、文字列にハイビット文字が含まれている場合、どうやら lldb は正しく動作していないようです。NSString コンストラクターの 1 つを使用して、式パーサーで同じ効果を得ることができます。

(lldb) expr NSString *$newstr = [NSString stringWithUTF8String: "Something¢"]
(lldb) expr $newstr
(__NSCFString *) $newstr = 0x00000001007000a0 @"Something¢"

その後、将来の式で $newstr を使用できます。

于 2016-01-29T19:50:40.543 に答える
1

LLDB 式パーサーのバグに違いありません。デバッガーにもバグがあります..

llvm ClangExpressionParserで使用されるIRForTargetでエラーを探すことができます。

于 2016-01-29T17:39:49.050 に答える