看板 MacDev 關於我們 聯絡資訊
目前我有三個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
hearther:呃.....NSLog(@"%@", dataArray); 08/15 23:52
yueyajbdt:重點不是在那個NSLOG啦XD 我是想說他連print都會出錯了 08/16 03:17
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)
SlimeEditor:先init一個NSMutableArray給dataArray 08/16 11:46
SlimeEditor:直接讀擋案放著等以後用的話可能會被autorelease掉 08/16 11:47
SlimeEditor:所以先找個地點讓他永久待著比較穩 08/16 11:47
hearther:你的dataArray怎麼宣告? 08/17 00:12
hearther:arrayWithContentsOfFile 這個fun回傳值會autorelease 08/17 00:14
hearther:如果你的property沒有設retain那當然會出問題 08/17 00:15