NSTimer崩溃应用程序

时间:2011-02-10 20:05:20

标签: iphone objective-c nsdate

为什么以下命令会导致代码崩溃?

  

NSTimeInterval timeLeft = [NSDate timeIntervalSinceDate:                      [[NSUserDefaults standardUserDefaults]                           objectForKey:@ “lastDate”]           [[[timer userInfo] objectForKey:@“theLabel”]         text:[NSString stringWithFormat:@“剩余时间:%d”,waitTime]]; //设置标签文本

我可以肯定变量没有问题。 userInfo是通过NSTimer传入的字典。

谢谢!

1 个答案:

答案 0 :(得分:2)

假设您准确地粘贴了代码,这行代码肯定会引发异常:

[[[timer userInfo] objectForKey:@"theLabel"] text:[NSString stringWithFormat:@"Time Remaining: %d", waitTime]];

你试图在某个对象上调用方法-text:,这可能是UILabel。但是没有这样的方法。编译器应警告您它不知道任何名为-text:的选择器。相反,你几乎肯定想要-setText:

您还引用了一个名为waitTime的变量,但前一行创建了一个名为timeLeft的变量。假设您真的想引用timeLeft,那么这里有另一个问题,即timeLeft是一个双精度数,但您将其打印为整数。如果你想要一个整数秒,你应该尝试制作格式标记%.0f并制作参数roundf(timeLeft)