我在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已被执行。
我错了什么?
谢谢!
答案 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];