Kor*_* Ou 0 linker static global-variables objective-c
// in ClassA.h
static NSString *globalStr = @"HelloWorld";
@interface ClassA
...
@end
// in ClassB.h
#include "ClassA.h"
// in ClassB.m
...
NSLog(@"The global string: %@", globalStr);
...
Run Code Online (Sandbox Code Playgroud)
在C++中,"static"应该表示变量或函数具有内部链接.
但是在这种情况下它用于共享变量,没有static关键字就会发生错误.
我很困惑,有人可以告诉我背后的概念吗?
谢谢!
static在Objective-C中与C中的含义完全相同 - 它具有内部链接和静态存储持续时间.static在这种情况下,您会收到错误,因为globalStr在包含源代码的每个对象中都会有一个重复的符号ClassA.h.你没有分享任何东西 - 你正在获得globalStr每个编译单元的新副本.
不要将对象定义放在标题中,你会更好.如果你想要一个全局字符串,你需要放
extern NSString *globalStr;
Run Code Online (Sandbox Code Playgroud)
在ClassA.h,并在一个实现文件中定义它:
NSString *globalStr = @"HelloWorld";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1068 次 |
| 最近记录: |