列挙値で満たされた NSMutableArray プロパティからインデックスによって列挙値を取得しようとしています。
私が望んでいたのは、動的プロパティを設定し、クラス インスタンス内で設定を戻すことだけでした。
したがって、問題を明らかにする明確な例をコーディングしました。
問題はこれです。例の WriteByType メソッドは正しい値を取得しません。「You Get Right Arrow」をログに記録する必要がありますが、ログには記録されません
//----------------------------------------------------------
// CCMyClass.h
#import <Foundation/Foundation.h>
typedef enum {
aLeft,
aRight
} Arrow;
@interface CCMyClass : NSObject
{
NSMutableArray *_arrowsPkg;
}
@property(nonatomic,copy) NSMutableArray *arrowsPkg;
@property (nonatomic)int nextPkgIndex;
-(void)GetItemOne;
@end
//-------------------------------------------------------------
// CCMyClass.m
#import "CCMyClass.h"
@implementation CCMyClass
@synthesize arrowsPkg=_arrowsPkg;
-(void)WriteByType:(Arrow)AArrow
{
switch (AArrow) {
case aLeft:
NSLog(@"You Get Left Arrow");
break;
case aRight:
NSLog(@"You Get Right Arrow");
break;
}
}
-(void)GetItemOne
{
Arrow a =(Arrow)[[self arrowsPkg]objectAtIndex:1];
[self WriteByType:a];
}
@end
//---------------USAGE EXAMPLE----------------------------------------------
// CCAppDelegate.m
- (IBAction)btn1Clicked:(id)sender {
CCMyClass *c1=[[CCMyClass alloc]init];
NSNumber *v1=[NSNumber numberWithInt:aLeft];
NSNumber *v2=[NSNumber numberWithInt:aRight];
NSMutableArray *arr1=[NSMutableArray arrayWithObjects:v1,v2, nil];
[c1 setArrowsPkg:arr1];
[c1 GetItemOne];
}