2013-12-13 49 views
0
@interface Taxi_MainViewController : Taxi_BaseNavViewController 
{ 
    __block NSTimer *timer_; 
} 



    [Taxi_do_order psg_place_orderWithMemberId:strMemberId_ orderStatus:K_orderStatus_open andCLLocationCoord:location.coordinate callback:^(NSInteger iOrderId){ 
     [Taxi_StatusView dismiss]; 
     if (iOrderId >=0) 
     { 
      isOrderExist = YES; 
      [weakSelf_ showWaittingDriverAcceptView]; 
      timer_ = [NSTimer scheduledTimerWithTimeInterval:2.0 
                   target:weakSelf_ 
                  selector:@selector(actListen:) 
                  userInfo:nil 
                   repeats:YES]; 
     }else 
      [weakSelf_ hideWaittingDriverAcceptView]; 
    }faile:^(){ 
     [Taxi_StatusView showLostNetWork]; 
    }]; 

当我调用[timer_ invalidate],timer_ = nil;在其他方法中,定时器功能仍然每2秒呼叫一次。如何在定时器内创建定时器时启动定时器?

回答

1

在你的情况下,变量timer_永远不会保留,并且在结束块范围处丢失指针 。拥有财产你有保留/释放机制。

试试这个:

@interface Taxi_MainViewController : Taxi_BaseNavViewController 
{ 

} 

@property (nonatomic,retain) NSTimer* timer; 

@end 



[Taxi_do_order psg_place_orderWithMemberId:strMemberId_ orderStatus:K_orderStatus_open andCLLocationCoord:location.coordinate callback:^(NSInteger iOrderId){ 
     [Taxi_StatusView dismiss]; 
     if (iOrderId >=0) 
     { 
      isOrderExist = YES; 
      [weakSelf_ showWaittingDriverAcceptView]; 
      self.timer = [NSTimer scheduledTimerWithTimeInterval:2.0 
                   target:weakSelf_ 
                  selector:@selector(actListen:) 
                  userInfo:nil 
                   repeats:YES]; 
     }else 
      [weakSelf_ hideWaittingDriverAcceptView]; 
    }faile:^(){ 
     [Taxi_StatusView showLostNetWork]; 
    }];