我正在尝试从父级设置子视图控制器 (DateViewController) 的属性,并在第二次这样做时出现错误的访问错误。这是代码。这是 DateViewController.h。问题在于 selectedDate 属性:
#import <UIKit/UIKit.h>
@protocol DateViewDelegate <NSObject>
-(void) dateViewControllerDismissed:(NSDate *)selectedDate;
@end
@interface DateViewController : UIViewController {
IBOutlet UIDatePicker *dateReceipt;
id myDelegate;
}
-(IBAction)btnDone;
@property(nonatomic,assign)NSDate *selectedDate;
@property(nonatomic,assign)id<DateViewDelegate> myDelegate;
@end
在 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,我从 datepicker 控件中选择日期,然后控制器被关闭。在父视图控制器中,调用 dateViewControllerDismissed 并将接收日期设置为 selectedDate 参数。下次我单击日期按钮时,我收到一个错误的访问错误,我将 DateViewController 的 selectedDate 属性设置为receiptDate。我假设这是某种我没有正确处理的内存问题。IOS编程对我来说仍然是新的。