【问题标题】:NSTimer Crashes ApplicationNSTimer 崩溃应用程序
【发布时间】:2011-06-25 03:00:22
【问题描述】:

为什么下面的代码会导致我的代码崩溃?

NSTimeInterval timeLeft = [NSDate timeIntervalSinceDate: [[NSUserDefaults 标准用户默认值] objectForKey:@"lastDate"]] [[[定时器用户信息] objectForKey:@"theLabel"] text:[NSString stringWithFormat:@"Time Remaining: %d", waitTime]]; //设置标签文字

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

谢谢!

【问题讨论】:

  • 请格式化您的代码。这几乎是不可读的,而且您缺少分号和括号。
  • 您还缺少崩溃日志、设置计时器的代码以及有关如何存储各种对象引用的任何信息;实例变量?全球人?本地人?
  • 这可能是你想要做的(假设所有变量都存在并且按预期设置):[[timer userInfo] setValue:[NSString stringWithFormat:@"Time Remaining: %d", waitTime] forKey:@"theLabel"];

标签: iphone objective-c nsdate


【解决方案1】:

假设你已经准确地粘贴了你的代码,这行代码肯定会抛出异常:

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

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

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

【讨论】:

    猜你喜欢
    • 2013-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-31
    • 1970-01-01
    • 1970-01-01
    • 2013-02-03
    相关资源
    最近更新 更多