gpt4 book ai didi

objective-c - 在 Objective-C 中声明静态变量的正确方法是什么?

转载 作者:太空狗 更新时间:2023-10-30 03:21:47 24 4
gpt4 key购买 nike

好吧,在 C、C++、C# 和 Objective-C 之间切换时仍然需要重新调整,所以有时我会头晕。然而这一次,我对正确的方法更加困惑,因为我已经看到至少三种不同的方法来在 Objective-C 中声明静态变量,如果您认为它只是 C 本身的超集,那么还有第四种方法。那么,哪一个是正确的?

附加问题

如果我们想共享一个独立变量(即不是静态类变量,而是刚刚在头文件中定义的变量),是否以与“C”中相同的方式完成(头文件中是否带有“extern”? )


选项A

Foo.h

@interface Foo : NSObject{
static int Laa;
}

@end

Foo.m

@implementation Foo
...
@end

选项B

Foo.h

@interface Foo : NSObject{
}

@end

Foo.m

static int Laa; // <-- Outside of the implementation

@implementation Foo
...
@end

选项C

Foo.h

@interface Foo : NSObject{
}

@end

Foo.m

int Laa; // <-- Note no word 'static' here like in 'Option B'

@implementation Foo
...
@end

选项D

Foo.h

static int Laa;

@interface Foo : NSObject{
}

@end

Foo.m

@implementation Foo
...
@end

选项E

Foo.h

@interface Foo : NSObject{
}

@end

Foo.m

@implementation Foo

static int Laa;

...

@end

奖励问题...

您是否必须使用 extern 一词,或者仅在您使用 .c/.c++ 文件而不是 .m/.mm 文件时使用?

最佳答案

选项 A 是错误的。 Objective -c 类没有静态变量。

选项 BE 是实现静态变量的正确方法。

选项 C 创建一个全局变量,可以使用 extern 关键字在实现文件之外访问该变量。

选项 D 再次创建一个全局静态变量,只需导入 .h 文件即可从任何地方访问该变量。

关于您的奖励问题:extern 关键字与 C/C++ 中的含义相同。

关于objective-c - 在 Objective-C 中声明静态变量的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9272091/

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