iphone - 为什么这些 "member"变量表现得像静态变量?

标签 iphone objective-c ios pointers

我有这样声明的 MyUnitClass 的实现:

@implementation MyUnitClass
Unit* _unit = NULL;

在 for 循环中,我迭代了很多次并创建了 MyUnitClass 的多个实例。 Unit 的行为就像一个静态变量。我在 MyUnitClass 的 init 方法中设置了一个断点,这是我每次初始化该类时得到的:

(gdb) print _unit
$4 = (Unit *) 0x112340
(gdb) print _unit
$5 = (Unit *) 0x112340

注意:

我已经通过将变量移动到 @interface 声明中解决了这个问题。如果您回答了这个问题,很高兴看到指向可以找到此信息的页面的链接。

最佳答案

这是因为您没有用大括号将变量括起来,使其成为全局变量。要修复,请尝试像这样定义它:

@implementation MyObject {
   unsigned int myVar;
}

// rest of implementation

@end

只能有一个@implementation block ,所以如果它已经在.h 文件中声明,则需要在其中添加成员,或者需要将整个 block 移动到.m 文件中。

这是 C 的残余,编译器不太清楚您希望它成为 iVar,而不是全局变量。

关于iphone - 为什么这些 "member"变量表现得像静态变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11918863/

相关文章:

iphone - 带有 UISplitViewController 的空白窗口

iphone - 如何通过旋转在圆形轨迹上移动 uiview?

ios - TabBarController 中嵌入的导航栏中未显示按钮项

ios - UITextField 在执行字符限制的同时附加/在日期之间

iphone - 我什么时候应该在 -(void)viewDidUnload 而不是 -dealloc 中释放对象?

iphone - 由于未捕获的异常而终止应用程序,同时加载 View

iphone - 编写 "Brushes"优质绘图应用程序,需要书籍和资源推荐

ios - 线程 1 : signal SIGABRT - AppDelegate. h

ios - UIImageView 显示在 Storyboard 中但未显示在模拟器中

ios - UIView全屏