Objective-C 中的静态修饰符
Static modifier in Objective-C
我想在 Objective-C
中确认一些关于 static
的知识
在Objective-C中,下面的代码是错误的,但在Objective-C++中是正确的:
static UIView *view = [[UIView alloc] init];
当我在函数中使用static
修改像上面代码中的指针变量时,我发现它会保留两个变量:指针和对象(指针指向到),对吗?
是的,C++ 允许比 C 更复杂的静态初始化。static
关键字与这两种语言中的这种行为无关;只是控制范围(注意:我假设您没有在 C++ class 声明中使用 static
,而是在实现文件中使用 C/Objective-C)。
您需要了解对象(class 的实例)的概念以及对该对象的引用。您可能还想了解这些东西在内存中的存储位置(即堆和堆栈)。 Objective-C 也增加了复杂性,因为它使用引用计数来管理对象的生命周期,这与 C++ 和 C 不同。
我想在 Objective-C
中确认一些关于static
的知识
在Objective-C中,下面的代码是错误的,但在Objective-C++中是正确的:
static UIView *view = [[UIView alloc] init];
当我在函数中使用
static
修改像上面代码中的指针变量时,我发现它会保留两个变量:指针和对象(指针指向到),对吗?
是的,C++ 允许比 C 更复杂的静态初始化。
static
关键字与这两种语言中的这种行为无关;只是控制范围(注意:我假设您没有在 C++ class 声明中使用static
,而是在实现文件中使用 C/Objective-C)。您需要了解对象(class 的实例)的概念以及对该对象的引用。您可能还想了解这些东西在内存中的存储位置(即堆和堆栈)。 Objective-C 也增加了复杂性,因为它使用引用计数来管理对象的生命周期,这与 C++ 和 C 不同。