3

を変数に割り当て、後でその値にアクセスするにはどうすればよいですか? これは非常に簡単だと思いましたが、値を変数に代入しようとするたびにenum(Xcode で型の不一致や警告が表示されません)、アプリがEXC_BAD_ACCESSエラーでクラッシュします。

enumヘッダーファイルで設定する方法は次のとおりです( BarTypes.h):

typedef enum {
    BarStyleGlossy,
    BarStyleMatte,
    BarStyleFlat
} BarDisplayStyle;

そこに問題はありません(少なくとも値の読み取りと使用)。ただし、enum値の 1 つ ( BarStyleGlossyBarStyleMatte、または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ウェブ全体で いくつかの参考文献を見つけました。

編集:メソッドを呼び出すsetupBarStyle方法は次のとおりです。

BarView *bar = [[BarView alloc] init];
[bar setupBarStyle:displayStyle];
4

3 に答える 3

0

私は自分でこのエラーを抱えていましたが、エラーは私が自分で作成した別のバグが原因でした。

私のプロパティ「myApplicationState」のセッターは次のとおりです。

-(void)setApplicationStyle:(myApplicationStyle)applicationStyle{
    self.applicationStyle = applicationStyle;
    //some more code
}

もちろん、セッターでは、設定が何度も何度も呼び出されるため、これは無限ループになります。

次のようにする必要があります。

-(void)setApplicationStyle:(myApplicationStyle)applicationStyle{
    _applicationStyle = applicationStyle;
    //some more code
}
于 2015-04-30T08:05:42.270 に答える
0

実装するメソッドは呼び出されsetupBarStyle:ますが、オブジェクトに対して呼び出しsetupBarShape:ます。

于 2013-06-05T21:02:00.270 に答える