我无法从一种方法访问变量并收到错误:EXC_BAD_ACCESS。
在MyClass.h中,我将var声明为:
@interface ListeHorairesController : UITableViewController <UITableViewDelegate, UIGestureRecognizerDelegate/*, NSXMLParserDelegate*/>
{
NSString *dateSelected;
...
然后在MyClass.m中我试着这样使用:
- (id)initWithStyle:(UITableViewStyle)style Donnees:(NSArray *)_data HeureDebut:(NSString *)_hDeb Date:(NSString *)_date
{
self = [super initWithStyle:style];
if (self){
dateSelected = _date;
...
然后用另一种方法:
-(void)effectuerMajListes:(NSDictionary *)dictRes
{
NSDateFormatter *formatter_now;
NSString *dateString;
formatter_now = [[NSDateFormatter alloc] init];
[formatter_now setDateFormat:@"yyyy-MM-dd"];
dateString = [formatter_now stringFromDate:[NSDate date]];
[formatter_now release];
//NSLog(@"%@", selected_date);
if(![dateSelected isEqualToString:dateString]){ // <== ERROR POPS HERE
NSLog(@"Not today : we won't refresh the view.");
return;
}
...
有人可以解释一下我为什么会遇到这个错误,以及如何正确地做到这一点?
感谢。
我已尝试使用self.dateSelected
self->dateSelected
我尝试将其定义为类属性,并使用@synthetize
但未成功。
答案 0 :(得分:1)
当您使用MRC时,您需要保留该值。
错误显示对象不存在。
使用:
dateSelected = [_date retain];
因为_date
是一个参数,您只将其分配给darteSelected
并且它(_date
)在方法结束时被释放。
答案 1 :(得分:1)
您似乎可能正在使用手动内存管理。您应该使用ARC(自动保留计数)来代替修复此特定问题,这意味着您不必担心这些问题。