作者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