我想创建一个对象,但是类型取决于if条件的结果:
if ([type isEqualToString:@"day"]) {
GraphDayView *graphv = [[GraphDayView alloc] initWithFrame:rect];
} else {
GraphMonthView *graphv = [[GraphMonthView alloc] initWithFrame:rect];
}
问题是graphv不在范围内,因此在if语句后我无法使用它。
因此,我尝试将其声明为ID:
id graphv;
if ([type isEqualToString:@"day"]) {
graphv = [[GraphDayView alloc] initWithFrame:rect];
} else {
graphv = [[GraphMonthView alloc] initWithFrame:rect];
}
但是现在的问题是,编译器不知道对象grapv是什么类型。所以:
graphv.backgroundColor = [UIColor whiteColor];
给出一个错误。有人知道如何解决这个问题吗?
最佳答案
如果它们共享相同的超类,则使用该超类代替id。否则,创建两个变量并将它们设置为nil:
GraphDayView *gdv = nil;
GraphMonthView *gmv = nil;
然后在if语句之后进行测试,以查看哪个已初始化。
关于objective-c - 在if条件中初始化对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9750506/