列挙型を変数に割り当て、後でその値にアクセスするにはどうすればよいですか? これは非常に簡単だと思いましたが、値を変数に代入しようとするたびにenum
(Xcode で型の不一致や警告が表示されません)、アプリがEXC_BAD_ACCESSエラーでクラッシュします。
enum
ヘッダーファイルで設定する方法は次のとおりです( BarTypes.h
):
typedef enum {
BarStyleGlossy,
BarStyleMatte,
BarStyleFlat
} BarDisplayStyle;
そこに問題はありません(少なくとも値の読み取りと使用)。ただし、enum
値の 1 つ ( BarStyleGlossy、BarStyleMatte、またはBarStyleFlat ) を格納できる変数を作成し、その変数を設定しようとすると、アプリがクラッシュします。変数を設定して使用する方法は次のとおりです。
//Header
@property (nonatomic, assign, readwrite) BarDisplayStyle barViewDisplayStyle; //I've also tried just using (nonatomic) and I've also tried (nonatomic, assign)
//Implementation
@synthesize barViewDisplayStyle;
- (void)setupBarStyle:(BarDisplayStyle)displayStyle {
//This is where it crashes:
self.barViewDisplayStyle = displayStyle;
}
なぜここでクラッシュするのですか?列挙型の値を変数に格納するにはどうすればよいですか? この問題は、私の側の理解不足に関係していると思いますが、enums
従来の変数の設定や割り当てなどに従えば、これでうまくいくはずです。私が間違っていることについてのアイデアはありますか?
私は s に慣れていないので、ここでの私の語彙は少し混乱している可能性があることに注意してくださいenum
(私を許してください。私が言おうとしていることを知っている場合は、自由に編集してください)。
enums
ウェブ全体で いくつかの参考文献を見つけました。
- Objective-Cのtypedef列挙とは何ですか?
- Objective C で列挙型をプロパティとして使用する
- グローバル列挙型の作成方法
- Objective-C で ENUM を定義して使用するにはどうすればよいですか?
- Apple の Developer サイトも検索してみましたが、Apple API のタイプ (Foundation、UIKit など) に関する結果しか得られませんでした。
編集:メソッドを呼び出すsetupBarStyle
方法は次のとおりです。
BarView *bar = [[BarView alloc] init];
[bar setupBarStyle:displayStyle];