Macos NSUndoManager操作名称中的符号有什么特别之处?

Macos NSUndoManager操作名称中的符号有什么特别之处?,macos,cocoa,undo,Macos,Cocoa,Undo,我注意到如果我说 [self.undoManager setActionName: @"X & Y"]; 然后生成的菜单项看起来像Undo X Y,X和Y之间有两倍的空格。在Mac OS X 10.7.5和10.10.3上进行了测试。我可以用加倍的方法使安培数出现,但我想知道为什么会出现这种情况?有文件记录吗?在动作名称或菜单项中是否有一些更广泛的字符是专门解释的?在接下来的几天里,菜单项可能会有一个助记符,即菜单中带下划线的字符。如果用户在菜单有焦点时键入该字符,则会选中该项 在代码

我注意到如果我说

[self.undoManager setActionName: @"X & Y"];

然后生成的菜单项看起来像Undo X Y,X和Y之间有两倍的空格。在Mac OS X 10.7.5和10.10.3上进行了测试。我可以用加倍的方法使安培数出现,但我想知道为什么会出现这种情况?有文件记录吗?在动作名称或菜单项中是否有一些更广泛的字符是专门解释的?

在接下来的几天里,菜单项可能会有一个助记符,即菜单中带下划线的字符。如果用户在菜单有焦点时键入该字符,则会选中该项

在代码中,助记符是在菜单标题字符串中通过在字符前面加一个符号和来表示的。NSMenuItem上仍然有一些不推荐使用的方法来设置和获取助记符

OS X不支持该功能。它不显示带下划线的字符,也不允许您通过键入来选择菜单项。所以,这些方法只是从标题中去掉了符号


显然,NSUndoManager必须仍然使用这些基于助记符的API之一来设置菜单项标题。这大概是为了向后兼容。一些应用程序可能在撤销操作名称中使用了符号,目的是将其转换为助记符。如果NSUndoManager通过切换到更常见的、非助记符的NSMenuItem方法来停止剥离它们,那么这些应用程序可能会在奇怪的地方显示符号和。

我想我在某个地方读到过,你可以在其中放一个双符号,它会将其视为一种逃避。不过我可能错了。@JoshuaNozzi:如果没有其他地方,你可以在问题中读到它;