如何將enum賦值給變量並稍後訪問其值?我認爲這很簡單,但每次我嘗試將enum
值賦值給一個變量(在Xcode中沒有類型不匹配或警告出現),我的應用程序崩潰,出錯EXC_BAD_ACCESS錯誤。將Objective-C中的變量賦值爲變量
下面是如何設置我的enum
在我的頭文件(BarTypes.h
):
typedef enum {
BarStyleGlossy,
BarStyleMatte,
BarStyleFlat
} BarDisplayStyle;
沒有問題存在(閱讀和使用的值至少)。然而,當我創建一個可以存儲enum
值之一(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
缺乏瞭解,但如果我遵循常規變量設置和分配等,這應該工作。關於我在做什麼的任何想法都是錯誤的?
請注意,我是enum
的新手,所以我這裏的詞彙可能有點混亂(請原諒我 - 如果您知道我想說的話,隨時進行編輯)。
我發現在網絡上約enums
幾個引用:
- What is a typedef enum in Objective-C?
- Using enum types as properties in Objective C
- How to create global enum
- How do I define and use an ENUM in Objective-C?
- 我也試圖尋找Apple's Developer site但只有大約類型的結果出來了對於Apple API(例如Foundation,UIKit等)
編輯:這就是我所說的setupBarStyle
方法:
BarView *bar = [[BarView alloc] init];
[bar setupBarStyle:displayStyle];
顯示調用setupBarStyle方法 – Wain
@Wain肯定會!我編輯了我的問題(編輯#1) –
編譯並運行代碼時沒有任何崩潰。請添加一個崩潰日誌。 –