おそらくこれは非常に単純な解決策ですが、私はそれを働かせることはできません。別のクラスの変数にアクセスするにはどうしたらいいですか?
私はCocoaファイルに複数のクラスを持っています。クラスの1つで、class1
私は別のクラスで使用する必要がある変数を作成しますclass2
。 class2
にこの変数をインポートする簡単な方法はありますか?
おそらくこれは非常に単純な解決策ですが、私はそれを働かせることはできません。別のクラスの変数にアクセスするにはどうしたらいいですか?
私はCocoaファイルに複数のクラスを持っています。クラスの1つで、class1
私は別のクラスで使用する必要がある変数を作成しますclass2
。 class2
にこの変数をインポートする簡単な方法はありますか?
変数をpublicにすることも、プロパティにすることもできます。例えば、それは公共作るために:
@interface Class1
{
@public
int var;
}
// methods...
@end
// Inside a Class2 method:
Class1 *obj = ...;
obj->var = 3;
それプロパティにするには:
@interface Class1
{
int var; // @protected by default
}
@property (readwrite, nonatomic) int var;
// methods...
@end
@implementation Class1
@synthesize var;
...
@end
// Inside a Class2 method:
Class1 *obj = ...;
obj.var = 3; // implicitly calls [obj setVar:3]
int x = obj.var; // implicitly calls x = [obj var];
プロパティのアプローチははるかに良い、IMHO – Abizern
あなたがプロパティとしてクラス2に変数を公開することができます。 class1がclass2への参照を持つ場合、class1はその変数を見ることができます。正直なところ、Objective-Cとオブジェクト指向プログラミングの初心者のようです。私は両方の詳細を読むことをお勧めします。
Here is a place Objective-Cでオブジェクト指向プログラミングを開始する。
"stackoverflow.com"は、上級ユーザー向けですか?誰が初心者なのか、誰が誰でないのかを定義する方法。男は客観的なCをどこで学ぶべきか疑問を抱かなかった。 –
@DariusMiliauskas:Pに正直に同意します – preetam
アプリ全体でアクセスする必要がある変数を保持するファイルを作成してみてください。
extern NSString *stringVariable;
@interface GlobalVariables
@property (retain, nonatomic) NSString *stringVariable;
@end
とGlobalVariables.mファイル内
#import "GlobalVariables.h"
@implements GlobalVariables
@synthesize stringVariable;
NSString *stringVariable;
@end
を追加し、限り、あなたはGlobalVariables.hをインポートすると、あなたがあなたの中にその変数にアクセスする必要があり、これまでの.mファイルを割り当てて、アクセスすることができますその中にあなたのプログラムのどこにいても。私は上記与えている
EDIT
私の答えは違った私は今これを行うに行くかの方法ではありません。 必要に "XCodeの" でそれは
@implementation MyClass
@sythesize = myVariable = _myVariable; // Not that we need to do this anymore
@end
.mファイルに、より多くの
@interface MyClass
@property (nonatomic, strong) NSString *myVariable;
@end
ようになる次に別のクラスでは、いくつかの方法で、私は
// .....
MyClass *myClass = [[MyClass alloc] init];
[myClass setMyVariable:@"My String to go in my variable"];
// .....
を持っているでしょうインポートを行い、それをプロパティとして宣言してオブジェクトを作成し、 "object.variable"構文を使用します。ファイル "Class2.m"は次のようになります。
#import Class2.h
#import Class1.h;
@interface Class2()
...
@property (nonatomic, strong) Class1 *class1;
...
@end
@implementation Class2
//accessing the variable from balloon.h
...class1.variableFromClass1...;
...
@end
ありがとう! :-)
"私はCocoaファイルに複数のクラスがあります。"普通の方法は、各クラスに対して1組のファイル(MyClass.h、MyClass.m)を作成することです。これを行うには、プロジェクト内のグループを右クリックし、[ファイルの追加]をクリックします。 .mを作成すると、.hは無料で提供されます。 –
インスタンス変数に直接アクセスすることは非常に悪い考えです。プロパティを使用し、アクセサーを合成するか、または独自に記述します。直接の可変アクセスはKVOやMac OS X上のバインディングなどの機能を損なってしまいます。 – Alex