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

时间:2010-12-04 16:55:03

标签: objective-c interface-builder nstabview

我有四个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”。但为什么它被归类为不一致?

1 个答案:

答案 0 :(得分:0)

intValue是NSString和NSNumber的方法。标识符一直是字符串。