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的警告之外,这似乎工作正常:从没有强制转换的整数制作指针。
我想我的问题是:我这样做了吗?还有另一种不会给我这个警告的方法吗?
答案 0 :(得分:3)
您可以在withThing:参数中使用枚举的名称而不是id。然后你可以从t中删除演员。
另外,我建议使用大写名称进行枚举。
答案 1 :(得分:3)
是的还有另一种方式。在枚举中,所有“事物”都与整数相关联。因此,如果您将方法中的id
更改为thing
或int
,则应该在没有警告的情况下工作。这是我一直这样做的方式。 ; - )