我有一点时间。我有一个datePicker设置开始和结束日期,如苹果日历。每当我多次点击datePicker时,我都没有收到任何消息。我猜我在泄漏记忆却无法找到它。请帮助...因为我需要在多种方法中访问这些,我将我的UIDatePicker和NSDateFormatter变成了ivars。当按下按钮并且所有内容都设置为接受IB中的多个触摸时,BOOL设置。
如果只点击一次或有时两次datePicker,就可以正常工作。
IBOutlet UIDatePicker *datePicker;
NSDateFormatter *dateFormatter;
NSDateFormatter *timeFormatter;
@property (nonatomic, retain) UIDatePicker *datePicker;
@property (nonatomic, retain) NSDateFormatter *dateFormatter;
@property (nonatomic, retain) NSDateFormatter *timeFormatter;
@synthesize datePicker;
@synthesize dateFormatter, timeFormatter;
viewDidLoad中:
NSDate *now = [[NSDate alloc] init];
[datePicker setDate:now animated:NO];
//known bug - hopefully fixed in 4.3
//[datePicker setMinimumDate:now];
[now release];
self.dateFormatter = [[NSDateFormatter alloc] init];
[self.dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[self.dateFormatter setTimeStyle:NSDateFormatterNoStyle];
formattedDateStringDate = [self.dateFormatter stringFromDate:datePicker.date];
NSLog(@"initdate %@", formattedDateStringDate);
self.timeFormatter = [[NSDateFormatter alloc] init];
[self.timeFormatter setDateStyle:NSDateFormatterNoStyle];
[self.timeFormatter setTimeStyle:NSDateFormatterShortStyle];
formattedDateStringTime = [self.timeFormatter stringFromDate:datePicker.date];
NSLog(@"initTime %@", formattedDateStringTime);
valueDidChange:
- (IBAction)changeDateInLabel:(id)sender
{
formattedDateStringDate = [dateFormatter stringFromDate:datePicker.date];
//NSLog(@"date %@", formattedDateStringDate);
formattedDateStringTime = [timeFormatter stringFromDate:datePicker.date];
//NSLog(@"time %@", formattedDateStringTime);
if (isStartDateSet)
{
startDateLabel.text = formattedDateStringDate;
startTimeLabel.text = formattedDateStringTime;
newDate = formattedDateStringDate;
newStartTime = formattedDateStringTime;
}
if (isEndDateSet)
{
endTimeLabel.text = formattedDateStringTime;
newEndTime = formattedDateStringTime;
}
}
这三个设置为nil
中的 viewDidUnload
,并且dealloc
中的所有三个都已发布。
答案 0 :(得分:1)
在进一步调查之前,您需要更改一些内容:
self.dateFormatter = [[NSDateFormatter alloc] init];
在此之后,dateFormatter的保留计数为2,1为alloc,1为属性'retain'。将其更改为dateFormatter = [[NSDateFormatter alloc] init];
对于timeFormatter也可以是相同的,也可能是datePicker。