2011-11-17 27 views
0

我寫一個小卡片遊戲爲iPhone IBAction爲方法內部參考,類實例不能在Objective-C

說,我有一個player.h/.M類,它有一個可變數組myCard

我寫

@interface Player : NSObject{ 
    NSMutableArray *myCard; 
} 
@property (nonatomic) NSMutableArray *myCard; 

@end 
在一個視圖控制器

,或者Controller.h

#import "Player.h" 
@interface controller : UIViewController { 
    Player *playerMe; 
} 

在視圖CONT滾輪,controller.m

- (Player *)playerMe 
{ 
    if (!playerMe) playerMe = [[Player alloc] init]; 
    return playerMe; 
} 

然後我有一些實例方法addObject在playerMe.myCard,一切都很好,直到現在。

我這是在IB增加了一個按鈕,有一個IB動作:

- (IBAction)btnSort:(id)sender { 
    //do something with self.playerMe.myCard 
} 

問題隨後出現,我看調試窗口,並在所有變量中查找值。在按鈕被點擊之前,self.playMe.myCard在那裏有一個特定的對象。一旦按鈕被點擊,self.playerMe.myCard是零,並沒有任何內部

所以,我想知道爲什麼self.playerMe.myCard不能引用,而self.playMe是好的,是關於@屬性定義?

謝謝!

+1

你在做什麼 - (IBAction)btnSort:(id)sender;當按鈕被點擊時?你在哪裏發起我的卡? – Dimme

+0

當我嘗試使用類player.m init – JordanSun

回答

1

嘗試使retain屬性爲myCard。默認情況下使用assign屬性時可能會發生泄漏。

@property (nonatomic, retain) NSMutableArray *myCard; 
+0

時調用alloc,它會轉儲EXC_BAD_ACCESS。實際上,我只做一個排序和addsubview按鈕被點擊之前playerMe.myCard陣列 – JordanSun

+0

順便說一句,我轉儲對象自我。 self.playerMe,self.playerMe.myCard到控制檯。前2個沒有問題。只有self.playerMe.myCard轉儲EXC_BAD_ACCESS。所以,它應該是關於內存分配,但不能修復它到目前爲止......... – JordanSun

1

我終於由量變到質變的@property attribut和myCard

player.h

@property (nonatomic,retain) NSMutableArray *myCard; 

player.m

- (void)setMyCard:(NSMutableArray *)aCardArr 
{ 
    [myCard autorelease]; 
    myCard = [[NSMutableArray arrayWithArray:aCardArr] retain]; 
} 

也許這是一個定製的setter解決的問題只是基本的東西,但作爲Objective-C的新手,只需在這裏發回像我這樣的人作爲參考。

感謝您的全力幫助

+0

請選擇您的文章作爲選擇的答案來關閉此問題,以便每個人都可以繼續前進。 –