I have below.
@interface MyViewController () {
NSDate *myCurrentDate;
}
@implementation MyViewController
-(void)viewDidLoad {
[super viewDidLoad];
myCurrentDate = [NSDate date];
}
- (IBAction) prevAction:(id)sender {
NSLog(@"myCurrentDate===%@", myCurrentDate); // here it says
myCurrentDate = [myCurrentDate dateByAddingTimeInterval:60*60*24*-1];
[self formatDateAndPostOnButton];
}
When I try to print current date as below, it crash saying BAD_EXCESS
NSLog(@"myCurrentDate===%@", myCurrentDate);
Below is the screenshot for the same.
I'm not using ARC in my project.
Any idea what is going wrong?
Since you are not using ARC, easiest way to retain objects is to use generated setters/getters.
Instead of:
@interface MyViewController () {
NSDate *myCurrentDate;
}
make
@interface MyViewController ()
@property(nonatomic, retain) NSDate* myCurrentDate;
@end
So it will keep NSDate
retained. Right now your NSDate
gets deallocated when the auto-release pool is drained.
You will need to use the getters/setters provided, however:
self.myCurrentDate = [self.myCurrentDate dateByAddingTimeInterval:60*60*24*-1];
Anyways I would recommend start using ARC to make your life simpler and avoid strange memory crashes.