我将这些 unicode 定义用于尖锐和扁平的符号,它们在字符串连接中工作正常:
#define kSharpSymbol [NSString stringWithFormat:@"\U0000266F"]
#define kFlatSymbol [NSString stringWithFormat:@"\U0000266D"]
[...]
// Set F#
[f setNoteLetterName:[NSString stringWithFormat:@"F%@",kSharpSymbol]];
然后,我刚刚阅读了一个SO question,Apple 不推荐依赖 unicode 格式,所以我去了这个,它也可以工作,但是当我执行隐式字符串 concat 时会导致编译器警告:
格式指定类型“无符号短”,但参数的类型为“int”
#define kSharpSymbol [NSString stringWithFormat:@"%C", 0x266F]
#define kFlatSymbol [NSString stringWithFormat:@"%C", 0x266D]
[...]
// Set F#
[f setNoteLetterName:[NSString stringWithFormat:@"F%@",kSharpSymbol]];
我想我需要澄清一下。什么是最好的,如何让编译器满意?