親から子ビュー コントローラー (DateViewController) のプロパティを設定しようとしていますが、2 回目にアクセス エラーが発生します。これがコードです。これは 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 プロパティを、ComdataIOSViewController.h の @interface セクションで NSDate * として宣言されている変数 receptorDate に設定します。これは 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 が呼び出され、recipientDate を selectedDate パラメーターに設定します。次に日付ボタンをクリックすると、DateViewController の selectedDate プロパティを rececutionDate に設定すると、不正なアクセス エラーが発生します。これは、正しく処理していない何らかのメモリの問題であると想定しています。IOS プログラミングは私にとってまだ新しいものです。