gpt4 book ai didi

iphone - 从 App Delegate 中提取的全局变量

转载 作者:行者123 更新时间:2023-11-28 22:40:26 26 4
gpt4 key购买 nike

我试图在我的 View Controller 中的多个方法中使用可变整数。 secondsLeft 变量工作正常,但 otherNumber 变量不起作用。我收到错误:初始化元素不是编译时常量。关于我应该如何执行此操作的任何想法?谢谢!

@interface ViewController ()

@end

@implementation ViewController
@synthesize countDown,Timerlbl;

int secondsLeft = 500;

int otherNumber =[(AppDelegate *)[UIApplication sharedApplication].delegate otherNumber];

最佳答案

问题是您已将 otherNumber 声明为全局变量,并且编译器期望初始赋值是编译时常量。 [delegate otherNumber] 导致选择器调用,这不是编译时常量。

解决方案是将作业移至代码中。例如:

- (id)init
{
self = [super init];
if(self) {
otherNumber = [(AppDelegate *)[UIApplication sharedApplication].delegate otherNumber];
}

return self;
}

另外请注意,在 Objective-C 中通常不建议使用全局变量。 @property 值通常更受推荐。不仅如此,您的 ViewController 类现在与您的 AppDelegate 具有依赖关系。由于您的 AppDelegate 很可能是负责实例化您的 ViewController 的人,请考虑让它注入(inject) otherNumber 的值。例如:

@interface ViewController ()
@property (nonatomic, assign) int otherNumber;
@end

- (id)initWithSomeNumber:(int)otherNumber
{
self = [super init];
if(self) {
self.otherNumber = otherNumber;
}

return self;
}

关于iphone - 从 App Delegate 中提取的全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14670981/

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