【问题标题】:EXC_BAD_ACCESS when accessing UIDatePicker访问 UIDatePicker 时的 EXC_BAD_ACCESS
【发布时间】:2011-07-19 14:18:44
【问题描述】:

我想从我的 DatePicker 中读取值并将其存储在我的单例中,但尝试执行此操作时出现异常。

这里是单例接口:

@interface Helper : NSObject {
NSMutableArray *array;
//Information For Filter page
NSMutableArray *towns;
NSMutableArray *types;
//Shared resources to apply filters
NSDate *toDate;
NSDate *fromDate;
NSString *selectedType;
NSString *selectedTown;
//Shared resource of which button was clicked
int clicked;
int clickedCell;
int clickedContext;
}
@property (nonatomic, retain) NSMutableArray *array;
@property (nonatomic, retain) NSMutableArray *towns;
@property (nonatomic, retain) NSMutableArray *types;
@property (nonatomic) int clicked;
@property (nonatomic) int clickedCell;
@property (nonatomic) int clickedContext;
@property (nonatomic, retain) NSDate *toDate;
@property (nonatomic, retain) NSDate *fromDate;
@property (nonatomic, retain) NSString *selectedType;
@property (nonatomic, retain) NSString *selectedTown;

+(id)sharedManager;


@end

这是发生异常的函数

-(void) viewWillDisappear:(BOOL)animated
{

Helper *myHelper = [Helper sharedManager];
if(myHelper.clickedContext == 0)
{
    if(myHelper.clickedCell == 0)
    {
        //causes exception
        myHelper.fromDate = [self.fromDatePicker date];
    }
    else
    {
        //causes exception
        myHelper.toDate = [self.toDatePicker date];
    }
}
else
{
    if(myHelper.clickedCell == 0)
    {
        myHelper.selectedTown = [myHelper.towns objectAtIndex:[self.townPicker selectedRowInComponent:0]];
    }
    else
    {
        myHelper.selectedType = [myHelper.types objectAtIndex:[self.typePicker selectedRowInComponent:0]];
    }
}
[super viewWillDisappear:animated];   
}

选择器声明

@property (nonatomic, retain) IBOutlet UIDatePicker *toDatePicker;
@property (nonatomic, retain) IBOutlet UIDatePicker *fromDatePicker;
@property (nonatomic, retain) IBOutlet UIPickerView *typePicker;
@property (nonatomic, retain) IBOutlet UIPickerView *townPicker;

@synthesize 部分

@synthesize typePicker, toDatePicker, fromDatePicker, townPicker, townsView, toDateView, typesView, fromDateView;

知道为什么吗?

谢谢

【问题讨论】:

  • 没有你的 datepicker 对象的声明就什么也说不出来
  • 您确定已将此属性链接到 IB 中的选择器吗?
  • 看起来你的 UIDatePickers 是坏指针。确保释放的唯一位置是在 dealloc 中。
  • @Joe 即使我取消注释我所有的dealoc和release的我仍然得到异常
  • @jamapag 是的,我已经检查过了

标签: iphone objective-c ios ipad


【解决方案1】:

如果您的插座未在界面构建器中分配,则可能会发生这种情况。

如果您认为是这样,请尝试使用 NSZombieEnabled = YES 运行该应用,看看是否收到任何错误消息。

【讨论】:

  • +1 NSZombieEnabled - BAD ACCESS 几乎总是在访问一个被释放的对象
【解决方案2】:

我发现了问题。在我的助手类中,我应该分配不保留。所以应该是的

@property (nonatomic, assign) NSDate *toDate;
@property (nonatomic, assign) NSDate *fromDate;

【讨论】:

  • 我不确定这是解决您问题的正确方法。分配时,您可能会在稍后访问它们时创建一个新问题。
  • @Joe 如果我偶然发现有关此的更多问题,我会更新此内容。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多