NSTabViewItem标识符在一个上下文中是NSNumber,在另一个上下文中是NSString

我有四个tabViewItems,在IB中分配标识符1,2,3和4,然后设置为常量,即:
#define kTabViewSubject     1
在测试选择哪个tabViewItem时,它可以将标识符视为NSNumbers,如下所示:
if ([self.drawerTabView selectedTabViewItem] identifier] intValue]]] == kTabViewSubject])
// do something
但是当选择tabViewItem时,如果我将相同的标识符视为NSNumber,就像这样......
[self.drawerTabView selectTabViewItemWithIdentifier:[NSNumber numberWithInt:kTabViewSubject]];
...标识符被评估为一个类似地址的巨大数字,我得到一个“超出界限”的例外。 有效的方法是将标识符视为NSString,如下所示:
#define kTabViewSubjectX        @"1"
// --
[self.drawerTabView selectTabViewItemWithIdentifier:kTabViewSubjectX];
我理解NSTabViewItem的标识符属性被设置为通用的“id”。但为什么它被归类为不一致?     
已邀请:
intValue是NSString和NSNumber的方法。标识符一直是字符串。     

要回复问题请先登录注册