2011-08-03 6 views
1

私はCocoaで2つのクラスを持っていますが、一方から他方への変数にアクセスすることはできません。Cocoaの別のクラスの変数にアクセスできません

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が実行されたことを確認してください。

何が間違っていましたか?

ありがとうございます!あなたが作成するために必要な場合Class2

答えて

2

は、あなたがMyClassの新しいインスタンスを作成するのではなく、5

に以前myVarプロパティを設定している既存のインスタンスを参照しているそれは、また、それを言及する価値がありますMyClassの新しいインスタンス(そうしないこと)、この行:

MyClass *theClass=[MyClass alloc]; 

は次のようになります。

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

からAllocating and Initializing Objects

Objective-Cを使用してオブジェクトを作成するには、2つの手順が必要です。あなたはする必要があります。

  • 動的
  • 新しいオブジェクトのメモリを割り当てるには、両方のステップが完了するまで、オブジェクトが完全に機能していない

適切な値に新たに割り当てられたメモリを初期化します。 各ステップは別々の方法ではなく、典型的には、コードの 単一ラインで達成される:

最初のインスタンスは異なるMyClass` `の新しいインスタンスを作成するMyClass2``においてid anObject = [[Rectangle alloc] init];

+0

'MyClass'のインスタンスを作成した' MyClass'のインスタンスです。 – albertamg

+0

ありがとうございます。だから私はどのように既存のインスタンスを参照する必要がありますか?値を読み取るClass2関数(mis-)は、Class1から実際に開始されます。 –

+0

'MyClass2'のインスタンスを作成するときには、' MyClass2'の値にアクセスできるように、値またはそのインスタンスへのポインタを渡します。 – albertamg

関連する問題