3

シャープ記号とフラット記号にこれらの Unicode 定義を使用していましたが、これらは文字列連結で正常に機能します。

#define kSharpSymbol [NSString stringWithFormat:@"\U0000266F"]
#define kFlatSymbol [NSString stringWithFormat:@"\U0000266D"]

[...]
// Set F#
[f setNoteLetterName:[NSString stringWithFormat:@"F%@",kSharpSymbol]];

次に、 Unicode フォーマットに依存することは Apple によって推奨されていないというSO の質問を読みました。

形式は「unsigned short」型を指定していますが、引数の型は「int」です

#define kSharpSymbol [NSString stringWithFormat:@"%C", 0x266F]
#define kFlatSymbol [NSString stringWithFormat:@"%C", 0x266D]
[...]
// Set F#
[f setNoteLetterName:[NSString stringWithFormat:@"F%@",kSharpSymbol]];

これについては、明確にする必要があると思います。何が最善で、コンパイラを満足させるにはどうすればよいですか?

4

1 に答える 1

4

この問題にアプローチする別の方法を提案します。たとえば、Unicode シンボルを直接含む文字列定数を使用してもまったく問題はありません。

#define kSharpSymbol @"♯"
#define kFlatSymbol  @"♭"

利点は、プログラムの人間の読者が、表を調べなくてもシンボルを見ることができるということです。欠点は、最新のファイル エンコーディングをサポートしていない一部の古いテキスト エディターで表示すると、プログラムが正しく表示されないことです。幸いなことに、Xcode のエディターはそれらの 1 つではないため、心配する必要はありません。

于 2013-02-15T17:53:08.633 に答える