我有一个非常简单的应用程序,它使用两个组件的UIPickerView,每次我单击它时都会导致崩溃。我通过IB将它拖到我的视图中,然后连接到dataSource并委托给文件的所有者。在.h文件中:
@interface SettingsViewController : UIViewController <UIPickerViewDataSource, UIPickerViewDelegate> {在.m中
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)thePickerView {
return 2;
}
- (NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component {
NSInteger value;
if (component == 0) {
value = [tipiDado count];
} else {
value = [numeroDadi count];
}
return value;
}
- (NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
if (component == 0) {
return [tipiDado objectAtIndex:row];
} else {
return [numeroDadi objectAtIndex:row];
}
}
- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
NSLog(@"Selected Dice: %@. Number of Dice: %@", [tipiDado objectAtIndex:row], [numeroDadi objectAtIndex:row]);
}我不知道为什么它继续给我SIGBART或EXC_BAD_ACCESS...我不知道我哪里做错了。
有什么建议吗?
谢谢大家。
发布于 2010-10-18 22:01:16
如果不看更多的代码,就很难正确回答。当它崩溃时,您应该能够准确地看到是哪一行导致了崩溃(查看左侧的调用堆栈)。我的猜测是,您的数组(tipiDado或numeroDadi)中的一个没有正确保留,或者存储在其中的对象不是NSString类型。
如果您使用用于初始化问题的代码来更新问题,则更容易指出确切的问题。
发布于 2010-10-18 22:00:29
这可能是因为您的数组(tipiDado和numeroDadi)不再有效。也许它们被设置为自动释放的对象?
您可以做的是在调试模式下启动(调试配置和附加调试器),它应该在它崩溃的行上停止。
发布于 2010-10-18 22:09:30
尝试将分配与zombo检测/引用计数器一起使用,以查看哪个对象是问题所在。
https://stackoverflow.com/questions/3959883
复制相似问题