我想从父级设置子视图控制器(DateViewController)的属性,并在第二次访问时发生错误。这是代码。这是DateViewController.h。问题在于selectedDate属性: IOS设置Viewcontroller属性访问错误
里面DateViewController.m,我综合selectedDate。现在在父视图控制器(ComdataIOSViewController.m)中,我将DateViewController的selectedDate属性设置为变量receiptDate,它在ComdataIOSViewController.h的@interface部分中声明为NSDate *。这是ComdataIOSViewController.m的一个片段:
- (void)viewDidLoad
{
[super viewDidLoad];
receiptDate = [NSDate date];
}
-(IBAction)btnSetDate {
dlgDate=[[DateViewController alloc] initWithNibName:nil bundle:nil];
dlgDate.selectedDate = receiptDate;
dlgDate.myDelegate = self;
[self presentModalViewController:dlgDate animated:true];
[dlgDate release];
}
-(void) dateViewControllerDismissed:(NSDate *)selectedDate
{
NSDateFormatter *dateFormat = [[[NSDateFormatter alloc] init] autorelease];
[dateFormat setDateStyle:NSDateFormatterShortStyle];
receiptDate = selectedDate;
dateString = [dateFormat stringFromDate:receiptDate];
lblDate.text = dateString;
}
所以我第一次单击父控制器上设定的日期按钮,在出现DateViewController,我选择从日期选择器控制权的日期,以及控制器驳回。在父视图控制器中,dateViewControllerDismissed被调用,并将receiptDate设置为selectedDate参数。下次我点击日期按钮时,出现错误的访问错误,我将DateViewController的selectedDate属性设置为receiptDate。我假设这是某种内存问题,我没有正确处理。 IOS编程对我来说仍然是新的。
我应该提到,我以前确实有财产设置保留,它没有任何区别(即使你是正确的 - 它应该被设置为保留)。下面的答案解决了我的问题。 – Bob
很高兴您解决了您的问题。 :) –