1
我是一個目標C新手,我敢肯定這是一個簡單的問題,但我無法弄清楚這一點: 我有一個類聲明瞭一個實例變量myDeck,它是我創建的一個自定義類的一部分甲板。現在我有這個在我的代碼:如何正確初始化一個變量對象是一個對象?
在@interface:
Deck *myDeck;
在我的init方法:
Deck *ourDeck = [[Deck alloc]init];
myDeck = ourDeck;
因此,這似乎創造了myDeck就好了,我可以堅持它的價值觀並運行它的方法一段時間,但我遇到了一個地方,它不再存在,當我嘗試使用它時出現EXC_BAD_ACCESS錯誤。
我曾嘗試加入
[myDeck retain];
無濟於事,但仍無法在同一個點。我真的不知道我應該如何分配和啓動這個,我有一種感覺我失去了一些東西,任何人?
糟糕,是的,這是一個錯字(在我的代碼中,var被命名爲deck,爲了清晰起見,我在本文中進行了修改)。 我想你是對的,某些東西一定會釋放它太多,但我不明白是什麼,但我根本不會調用retain或autorelease,我想我的程序正在發佈它。我試着在我發佈的代碼之後粘貼了幾十個[myDeck retain]聲明,但這對我沒有幫助。我想這是我找到它時看起來很明顯的東西。 – Cocorico 2010-03-05 07:25:00
@Cocorico,你確定你保持對象的好指針嗎?你也可以通過訪問壞指針來獲得'EXC_BAD_ACCESS'。 – 2010-03-05 07:29:32
我不知道,那可能是我在想我的問題。我並不是100%明白指針是好還是壞。就像在我的代碼中,當我使用myDeck對象時,我基本上只是在做這樣的事情: [myDeck shuffleDeck]; ... [myDeck printOutCards]; 如果這是有道理的。有趣的是,我剛剛在那裏輸入的printOutCards命令在init方法和另一個方法中工作,但不是在出現錯誤的方法中。 – Cocorico 2010-03-05 07:38:08