NSButton 标记 ID returns 超过 7 的值不准确
NSButton tag ID returns inaccurate values past 7
我有一个包含 25 个 NSButton 的网格。我正在尝试为它们中的每一个设置一个标签,从 1-25 到 link 它们到一个 IBAction,包含这个:
- (IBAction)buttonClicked:(id)sender {
NSLog(@"Clicked button %lo.", [sender tag]);
}
但是,我 运行 遇到了问题。它在按钮 1-7 上工作正常,但第 8 个 returns 10、第 9 个 returns 11 和第 10 个 returns 12。我实验性地将按钮的标签设置为 88,它返回 130。这是一个错误,还是我的处理方式有误?
您应该使用 unsigned int
(%u) 格式,而不是 long
(%lo) :
NSLog(@"Clicked button %u.", [sender tag]);
- 根据您的标签格式,您可能只使用
%o
。将整数视为长是对数字的加法。
您的按钮值是正确的,只是打印错误,八进制格式(%lo 中的 'o')而不是十进制。这就是为什么您的 8 打印为 10 的原因——即 8 的八进制表示形式。 130 是八进制的 88 十进制:
我有一个包含 25 个 NSButton 的网格。我正在尝试为它们中的每一个设置一个标签,从 1-25 到 link 它们到一个 IBAction,包含这个:
- (IBAction)buttonClicked:(id)sender {
NSLog(@"Clicked button %lo.", [sender tag]);
}
但是,我 运行 遇到了问题。它在按钮 1-7 上工作正常,但第 8 个 returns 10、第 9 个 returns 11 和第 10 个 returns 12。我实验性地将按钮的标签设置为 88,它返回 130。这是一个错误,还是我的处理方式有误?
您应该使用 unsigned int
(%u) 格式,而不是 long
(%lo) :
NSLog(@"Clicked button %u.", [sender tag]);
- 根据您的标签格式,您可能只使用
%o
。将整数视为长是对数字的加法。
您的按钮值是正确的,只是打印错误,八进制格式(%lo 中的 'o')而不是十进制。这就是为什么您的 8 打印为 10 的原因——即 8 的八进制表示形式。 130 是八进制的 88 十进制: