【发布时间】:2014-12-08 09:33:23
【问题描述】:
我在.h 文件中声明了一个enum,如下所示:
typedef enum {
item1 = 0,
item2,
item3
} myEnum;
我想在视图控制器的委托方法签名中使用它,如下所示:
@protocol myClassDelegate <NSObject>
- (void)myDelegateMethod:(enum myEnum)type;
@end
我在这个视图控制器类中包含了.h 文件。
自动完成在创建上述协议时不建议枚举,编译器也会报错。
使用int 代替签名中的枚举可以正常工作。但是,我想知道是否有/没有使用枚举的方法,或者我做错了什么。
我看过很多帖子,但都是正常的方法。
编辑:
ViewControllerA.h
#import <UIKit/UIKit.h>
#import "ViewControllerB.h"
typedef enum {
item1 = 0,
item2,
item3
} myEnum;
@interface ViewControllerA : UIViewController <myClassDelegate>
@end
ViewControllerB.h
#import <UIKit/UIKit.h>
#import "ViewControllerA.h"
@protocol myClassDelegate <NSObject>
- (void)myDelegateMethod:(enum myEnum)type; // Autocomplete does not suggest the enums
// Also, x-code gives warning: Declaration of 'enum myEnum' will not be visible outside of this functio
@end
@interface ViewControllerB : UITableViewController
@property (nonatomic, strong) id<myClassDelegate> delegate;
@end
【问题讨论】:
-
将
(enum myEnum)type更改为(myEnum)type对我有用。 -
已经试过了,没用。您是否将其用于委托方法声明?
-
对不起,我没有用它作为委托方法,稍后会尝试。
-
是的,我的问题在于代表。否则对我来说也很好。不过还是谢谢。
-
我只是在委托方法中做了同样的事情,编译器没有抱怨。
标签: ios objective-c enums delegates