gpt4 book ai didi

objective-c - 在 if 条件下初始化对象

转载 作者:行者123 更新时间:2023-11-28 20:37:53 24 4
gpt4 key购买 nike

我想创建一个对象,但类型取决于 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];

报错。任何人都知道如何解决这个问题?

最佳答案

如果它们共享相同的父类(super class),则使用它而不是 id。否则,创建两个变量并将它们设置为 nil:

GraphDayView *gdv = nil;
GraphMonthView *gmv = nil;

然后在if语句后面测试一下,看哪个被初始化了。

关于objective-c - 在 if 条件下初始化对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9750506/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com