作者yueyajbdt (碳烤焦貓)
看板MacDev
標題[問題] PickerView 難以理解的錯誤 (更新)
時間Mon Aug 15 22:48:11 2011
目前我有三個PickerView,而且都運行正常
由於我每一個PickerView會回傳一個位置,所以我想要在底下寫更進一步的動作
以下為代碼
-------------
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row
inComponent:(NSInteger)component{
//當pickerView為選擇的pickerA時
if (pickerView == pickerA){
Label = .....
dict = [dataArray objectAtIndex:0];
}
dict是一個NSDictionary,想要讀取dataArray的內容
而這個dict那句放在ViewDidLoad完全沒有錯誤
他報錯的訊息則是跳出一個視窗上面指向記憶體
0x00f4309b <+0015> mov 0x8(%edx), %edi
Thread 1:Program received singal: "EXC_BAD_ACCESS".
再詳細的講就是,我寫了UIButtom,按了之後會跑出Picker,按照使用者的選擇
會影響下個Picker的內容,而我在選完第一個Picker時就報錯了
這到底是怎麼回事~"~
------------------------------------------------------------
呃…我找到問題在哪了,但還是很莫名奇妙
我在viewDidLoad裡面寫了讀取plist的來源
NSString *path = [[NSBundle mainBundle] pathForResource:@"data"
ofType:@"plist"];
dataArray = [NSMutableArray arrayWithContentsOfFile:path];
結果沒想到這兩句寫在viewDidLoad以後,dataArray不能拿去其他地方用?
即使把那兩句寫在initWithNibName裡也一樣
我是把那兩句寫在picker didSelectRow裡就行了,真的很奇怪…
讀取文件來源這種東西不是通常寫在Constructor或第一個會執行的main裡嗎
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.233.89.220
1F:→ hearther:呃.....NSLog(@"%@", dataArray); 08/15 23:52
2F:→ yueyajbdt:重點不是在那個NSLOG啦XD 我是想說他連print都會出錯了 08/16 03:17
3F:→ yueyajbdt:不知道為什麼dataArray會出錯在viewDidLoad卻不會 08/16 03:19
※ 編輯: yueyajbdt 來自: 220.233.89.220 (08/16 09:46)
※ 編輯: yueyajbdt 來自: 220.233.89.220 (08/16 10:18)
4F:→ SlimeEditor:先init一個NSMutableArray給dataArray 08/16 11:46
5F:→ SlimeEditor:直接讀擋案放著等以後用的話可能會被autorelease掉 08/16 11:47
6F:→ SlimeEditor:所以先找個地點讓他永久待著比較穩 08/16 11:47
7F:→ hearther:你的dataArray怎麼宣告? 08/17 00:12
8F:→ hearther:arrayWithContentsOfFile 這個fun回傳值會autorelease 08/17 00:14
9F:→ hearther:如果你的property沒有設retain那當然會出問題 08/17 00:15