IBで識別子1、2、3、および4が割り当てられた4つのtabViewItemがあり、定数として設定されています。
#define kTabViewSubject 1
どのtabViewItemが選択されているかをテストする場合、次のように識別子をNSNumbersとして扱うように機能します。
if ([self.drawerTabView selectedTabViewItem] identifier] intValue]]] == kTabViewSubject])
// do something
しかし、tabViewItemを選択するときに、同じ識別子をNSNumberとして扱うと、次のようになります…</ p>
[self.drawerTabView selectTabViewItemWithIdentifier:[NSNumber numberWithInt:kTabViewSubject]];
…識別子はアドレスのような巨大な数値として評価され、「境界を超えた」例外が発生します。
動作するのは、次のように識別子をNSStringとして扱うことです。
#define kTabViewSubjectX @"1"
// --
[self.drawerTabView selectTabViewItemWithIdentifier:kTabViewSubjectX];
NSTabViewItemの識別子プロパティが一般的な「id」として設定されていることを理解しています。しかし、なぜそれが一貫して分類されていないのですか?