2011-10-07 47 views
1

我在我的大腦模型中定義了一個NSMutableArray屬性。獲取自動發佈的NSMutableArray屬性?

@property (retain, nonatomic) NSMutableArray *stockColors; 

可變數組在Brain init期間被對象填充。

在我的視圖控制器的viewDidLoad功能我做

*Brain brain = [[Brain alloc]init]; 
NSLog(@"Brain stockColors is %@", brain.stockColors); 

這種運作良好,並預期它會記錄一個內存地址。

然後在相同的視圖控制器中,我有一個「addButtonPressed」操作聲明鏈接到.xib中的UIButton。

在我addbuttonPressed行動,如果我嘗試做同樣的日誌

NSLog(@"Brain stockColors is %@", brain.stockColors); 

程序崩潰!

如果我做

NSLog(@"Brain stockColors is %@", brain); 

我得到一個地址爲腦...所以大腦存在..但出於某種原因,似乎brain.stockColors是越來越的時候,我得到釋放或東西到addButtonPressed操作。

任何人都可以解釋什麼會導致它得到autoreleased?

感謝

+0

我不明白這一點。什麼是「大腦」課程?爲什麼不是'腦*腦'?什麼是使用'stockColors'和'IBAction'的類名? – Legolas

+1

你能告訴我們'Brain'的init方法嗎? – albertamg

+1

除了'* Brain brain'語法無效這個事實之外,變量'brain'甚至不應該存在於'viewDidLoad'之外,因爲它是一個局部變量,所以在那裏寫'brain.stockColors'不應該編譯。如果你發佈實際的代碼而不是你在你的網頁瀏覽器中編寫的有20個不相關的問題的代碼,甚至可能不包含導致你悲傷的實際錯誤,這會更有幫助。 – Chuck

回答

2

考慮您遺漏了重要的代碼......實際Brain初始化打電話,我會說,當你創建可變數組要指定實例變量而不是財產。

//The Brain init method should contain something similar to this 
self.stockColor = [NSMutableArray array]; 

//stockColor = [NSMutableArray array]; would be incorrect and get autoreleased 
+0

這是正確的!一旦我在init中添加了「self」,它就起作用了! – sayguh