gpt4 book ai didi

ios - 在 block 函数内创建计时器时如何触发计时器?

转载 作者:行者123 更新时间:2023-11-29 03:24:57 25 4
gpt4 key购买 nike

@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 秒调用一次。

最佳答案

在你的例子中,变量 timer_ 永远不会保留,你失去了指针在结束 block 范围内。有了属性,你就有了保留/释放机制。

试试这个:

@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];
}];

关于ios - 在 block 函数内创建计时器时如何触发计时器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20565652/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com