【问题标题】:NStimer issue in Cocoa-TouchCocoa-Touch 中的 NStimer 问题
【发布时间】:2012-08-15 15:55:52
【问题描述】:

我的应用程序需要显示一条临时消息,所以我自己创建了类似 android 的 Toast。它只适用于一个吐司。我正在使用 NSTimer 隐藏消息。如果我显示多个吐司,计时器就会成为问题。只有最后添加的 toast 会被隐藏,其他的不会被隐藏。如何隐藏所有 toast?

代码:

删除功能:

-(void)removeToast
{
 NSLog(@"removed");
 [self.view removeFromSuperview];
}

定时器开始:

timer = [NSTimer scheduledTimerWithTimeInterval:(4.0f) 
                                         target:self  
                                       selector:@selector(xxxx)
                                       userInfo:nil repeats:NO];

我在上面单独的NSObject 类中写了这个并创建了一个对象。我需要澄清一下如何同时运行两个 NSTimer 或跟踪所有 NSObjects

视图控制器中的对象创建是 @property(nonatomic,strong)Toast *toast;

【问题讨论】:

  • 如果我理解你的话,你需要保留两个 NSTimer 吗?如果是这样,我将创建两个保存计时器的实例变量。
  • 为什么不使用 performSelector:withObject:afterDelay:?

标签: iphone cocoa-touch nsobject nstimeinterval


【解决方案1】:

出于您的目的,无需将计时器的距离保留在 ivar 中。使用 userinfo: 参数传递您想要在计时器触发时隐藏的视图,如下所示:

[NSTimer scheduledTimerWithTimeInterval:(4.0f) 
                                     target:self  
                                   selector:@selector(xxxx)
                                   userInfo:yourView repeats:NO];

然后在您的选择器中从 userInfo 检索视图并将其隐藏。您可以在第 37 行找到工作示例 here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-22
    • 1970-01-01
    • 1970-01-01
    • 2011-10-07
    相关资源
    最近更新 更多