0

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」として設定されていることを理解しています。しかし、なぜそれが一貫して分類されていないのですか?

4

1 に答える 1

0

intValueは、NSStringおよびNSNumberのメソッドです。識別子はずっと文字列でした。

于 2010-12-05T15:05:04.640 に答える