-3

私は、Objective-C と iOS 開発者の初心者/学習者です。ここで基本的な質問があります。頭がわかりません。

私は2つのクラスを持っています。

ClassA では、ヘッダー ファイルで NSString オブジェクト ( planetNameImage) を定義したので、パブリックにアクセスできます。次に、.mファイルで次を使用して設定しました:

self.planetNameImage = planetSelected;

ClassB では、この値を取得しようとしているので、最初に次を使用して ClassA をインスタンス化します。

ClassA *claA = [[ClassA alloc] init];

次に、次を使用してその変数を呼び出してみてください。

NSString *imageName = claA.planetNameImage;

しかし、これは機能していません - 何かアイデアはありますか?

ありがとう。

4

6 に答える 6

0

planetNameImageをそのプロパティにする必要があります

@property (nonatomic) NSString *planetNameImage ;

および.mファイルで

synthesize planetNameImage ;

initまた、 のメソッドに次の文を入れる必要があると思いますClassA

self.planetNameImage = planetSelected;
于 2013-07-18T09:35:38.750 に答える
0

これに対処するには、基本的に2つの方法があります。

方法 I : iVar を宣言し、アクセサー メソッドを公開する

// .h file
@interface ClassA : NSObject {
    NSString    *planetNameImage;
}

- (NSString*) getPlanetNameImage;

@end

// .m file
@implementation ClassA

- (NSString*) getPlanetNameImage {
    return planetNameImage;
}

@end

方法 I :プロパティを宣言して合成する

// .h file
@interface ClassA : NSObject

@property(nonatomic,strong)NSString    *planetNameImage;

@end

// .m file
@implementation ClassA

@synthesize planetNameImage;

@end

ClassBでの使い方

#import "ClassA.h" 

- (void) someClassBMethod {
     ClassA *claA = [[ClassA alloc] init];
     NSLog(@"String: %@", [claA getPlanetNameImage]);
     //OR
     NSLog(@"String: %@", claA.planetNameImage);
}

それが役立つことを願っています。

于 2013-07-18T09:36:34.473 に答える
0

これを試して:

ClassA.h

@property (nonatomic, retain) NSString *planetNameImage;

ClassA.m

@synthesize planetNameImage = _planetNameImage;

_planetNameImage = planetSelected;

ClassB.m

NSString *imageName = classA.planetNameImage;
于 2013-07-18T09:46:59.480 に答える
0

最善の方法は、NSString名前 planetNameImageClassBに渡すことです。

クラス B に切り替えるときにコードを記述します。

ClassB *obj = [[ClassB alloc] init];
obj.newString = planetNameImage; 
[obj presentModelViewController:obj animated:YES];

ClassB.h ファイルに置きNSString *newString、設定することも忘れないでください。@property

于 2013-07-18T09:26:34.097 に答える
0

クラスのインスタンス変数に他のクラスにアクセスするには、それをプロパティとして定義する必要があります。あなたは以下のようにそれを行うことができます

クラスA.hで

@property (nonatomic,copy)   NSString * planetNameImage;

ClassA.mで

@synthesize planetNameImage;

@propertyは、planetNameImage の setter および getter メソッドを作成し、classB で使用できます。

于 2013-07-18T09:24:16.190 に答える