2011-08-08 118 views
0

我有一個關於通過不同類獲取值的基本問題。 我有一個classA填充數組(如果我打印出來它不是空的)。 LATER在B類我想要加載這個數組:我從類A中調用返回類A的數組的函數。但是在類B中,如果我調用我的新數組,那麼它就是null。 我有點困惑,因爲我認爲我保留數組的每個值,但它仍然爲空。我也嘗試了很多不同的可能性。我認爲它產生了一個基本的OOP語法錯誤?!兩個類之間的消息傳遞

//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

我試過你的建議,但我仍然有同樣的問題:( –

相關問題