无法从Cocoa中的其他类访问变量

时间:2011-08-03 14:40:24

标签: objective-c cocoa macos class

我在Cocoa中有2个类,但无法从一个到另一个访问变量。

Class1.h:

@interface MyClass : NSOpenGLView
{
int myVar;
}
@property (assign) int myVar;

Class1.m

@implementation MyClass
@synthetize myVar;
...
myVar=5;

Class2.m

MyClass *theClass=[MyClass alloc];
nb=theClass.myVar;

==> nb = 0(而不是5),我确信myVar = 5已被执行。

我错了什么?

谢谢!

1 个答案:

答案 0 :(得分:2)

Class2中,您要创建MyClass的新实例,而不是引用先前已将myVar属性设置为5的现有实例。

还值得一提的是,如果你需要创建MyClass的新实例(你不需要),这一行:

MyClass *theClass=[MyClass alloc];

应该是:

MyClass *theClass=[[MyClass alloc] init];

来自Allocating and Initializing Objects

  

使用Objective-C创建对象需要两个步骤。你必须:

     
      
  • 为新对象动态分配内存
  •   
  • 将新分配的内存初始化为适当的值
  •   
     

在两个步骤完成之前,对象才能完全正常运行。   每个步骤都是通过一个单独的方法完成的,但通常是在a   单行代码:

     

id anObject = [[Rectangle alloc] init];