2011-08-08 5 views
0

異なるクラスを介して値を取得することに関する基本的な質問があります。 私は配列を塗りつぶすclassAを持っています(もし私がそれを印刷すると空ではありません)。 LATER in class Bこの配列をロードしたい:私はクラスAの配列を返すクラスAの関数を呼び出します。ただし、クラスBでは、新しい配列を呼び出すとnullになります。 私は少し混乱しています。なぜなら、私は配列のすべての値を保持していると思うからですが、まだnullです。私はまた多くの可能性を試しました。私はその基本的なOOP構文の誤りは私が生成すると思いますか?2つのクラス間のメッセージ

//CLASS_A.h

@interface classA { 

     NSMutableArray* buoyArray; 
} 

@property (nonatomic, retain) NSMutableArray * buoyArray; 

-(NSMutableArray*)getArray:(NSMutableArray*)_array; 

//CLASS_A.m

...   

-(NSMutableArray*)getArray:(NSMutableArray*)_array { 
       _array=buoyArray; 
       return _array; 
      } 

//CLASS_B.h

#import "CLASS_A.h" 


@class classA; 
@interface classB ... 

classA *mapSource; 
NSMutableArray * buoyArray; 
     } 

@property(nonatomic,retain) classA *mapSource; 

//CLASS_B.m

buoyArray=[mapSource getArray:buoyArray]; 
NSLog(@"%@",buoyArray); 
+0

あなたは、各クラスが同じ配列を指すようにしたい、またはそれぞれが独自のコピーを持っている必要がありますか? – GarlicFries

+0

は基本的に配列のコピーです。私は同じ名前の別のクラスの配列のコピーを考えました。 –

答えて

1

実際には、allocを呼び出すことによってクラスAの新しいオブジェクトを作成していますので、initによって、そのインスタンスのすべてのプロパティ値が再初期化されます。

クラスAをクラスBにプッシュし、このクラスを使用して既存のクラスAオブジェクトをスタックからフェッチする必要がある場合。

mapSource = (ClassA *)[self.navigationController.viewControllers objectAtIndex: [self.navigationController.viewControllers count]-2]; 

その後、呼び出し、この

buoyArray=[mapSource getArray:buoyArray]; 
NSLog(@"%@",buoyArray); 
+0

私はあなたの提案を試みたが、私はまだ同じ問題を抱えている:( –

関連する問題