如何将枚举传递给子类中的方法(来自ViewController)?

时间:2011-01-19 15:58:38

标签: objective-c

My SomeClass.h

typedef enum thing {stuff, foo, bar, etc} thing;

@interface SomeClass : UIView {
    NSNumber *aNumber;
    thing aThing;
}

My SomethingViewController.m

-(void)doSomething:(NSNumber *)n
         withThing:(id)t
{
    SomeClass *class = [[SomeClass alloc] initWithFrame:aRect];
    [class setAThing:(thing)t];
    [class setANumber:n];
}

-(void)viewDidLoad
{

[self doSomething:[NSNumber numberWithInt:2] withThing:foo];

除了关于withThing的警告之外,这似乎工作正常:从没有强制转换的整数制作指针。

我想我的问题是:我这样做了吗?还有另一种不会给我这个警告的方法吗?

2 个答案:

答案 0 :(得分:3)

您可以在withThing:参数中使用枚举的名称而不是id。然后你可以从t中删除演员。

另外,我建议使用大写名称进行枚举。

答案 1 :(得分:3)

是的还有另一种方式。在枚举中,所有“事物”都与整数相关联。因此,如果您将方法中的id更改为thingint,则应该在没有警告的情况下工作。这是我一直这样做的方式。 ; - )