从目标C中的方法访问实例变量

时间:2014-03-17 12:28:25

标签: iphone objective-c cocoa-touch

我无法从一种方法访问变量并收到错误: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但未成功。

2 个答案:

答案 0 :(得分:1)

当您使用MRC时,您需要保留该值。

错误显示对象不存在。

使用:

dateSelected = [_date retain];

因为_date是一个参数,您只将其分配给darteSelected并且它(_date)在方法结束时被释放。

答案 1 :(得分:1)

您似乎可能正在使用手动内存管理。您应该使用ARC(自动保留计数)来代替修复此特定问题,这意味着您不必担心这些问题。