2012-04-20 20 views
-2

基底クラスからサブクラスメンバー変数にアクセスしようとしました。しかし、私はそれにアクセスすることはできません。これは、NULL値...などのため目的クラスcの基底クラスからサブクラスメンバーにアクセス

..私はクラスAおよびサブクラスClassBのを基底クラスき

を返します。私は基本クラスClassAからxと言うclassBメンバ変数にアクセスしようとしました。 nullを返します。私はclassB変数にある値を割り当てました。

私は

In classA.h 

@classB 

@property (nonatomic, retain) classB *BObj; 


In classA.m 


#import classB.h 

@synthesize BObj; 

BObj = [[classB alloc]init]; 
NSLog(@"%d",BObj.x); //returns NULL 


In ClassB.h 

@interface ClassB :ClassA 

@property(nonatomic,retain) int x; 

In ClassB.m 

@synthesize x; 

x = 10; //This value should be read from super class(Class A). 
+1

あなたのコードはすべて構文上有効ではありません。あなたが私たちに見て本当のコードを与えてくれないなら、助けたい人は誰でもこの問題を解決するために20の質問をする必要があります。 – Chuck

+0

@chuck:私は実際のコードのコピーである上記のコードを貼り付けました。私はclassAとclassBに置き換えました。それで全部です。基本クラスからサブクラスオブジェクトの値にアクセスするための例を教えてください。 –

+1

いいえ、それもコンパイルされません。 – Chuck

答えて

0

はこのお試しください..次のように試してみました:のNSLog(@ "%d個"、BObj.xを)。

+0

oh..thanks ..しかし、pblmはそうではありません。何も警告を出さないか、Error.itは単純にNULL値を出力します。 –

+0

確かに、これは構文が正しいためです。あなたのNSLogはNSLog(@ "%@"、BObj.x)と同等です。 %@は、複雑なオブジェクトを印刷することを意味します。この場合、これはオブジェクトではなく、単純な整数です。 – Niko

2

Chuckがコメントで言うように、これは実際のコードのようには見えません。どこにxを10に設定していますか? initメソッドまたはinitから呼び出されたメソッドにない場合、それは表示されません。また、あなたの編集であなたの苦情を無効にしました。%dはゼロを表示せず、ゼロを示します。

関連する問題