0

我试图将 NSNumber 传递给 UInt32 变量,它似乎可以工作,但是当我去记录 UInt32 的值时,我被卡住了。

这就是我的代码的样子。

if ([methodName isEqualToString:@"Manu"]) {
        cacheNumber = [cacheValue objectForKey:@"Manus"];

        NSLog(@"%@", cacheNumber); // This produces the correct number
    }

    UInt32 CACHE_VALUE = [cacheNumber intValue];
    NSLog(@"%@", CACHE_VALUE); // This is where my thread gets stuck

这是当我尝试单步执行第二个 NSLog 时它产生的消息(因为我在两个日志上都有断点来检查它们的输出)。

单步执行直到从函数 objc_msgSend 退出,该函数没有行号信息。

任何帮助将不胜感激

4

2 回答 2

2

你打印一个 NSString 而不是一个 UInt。

    NSLog(@"%lu", CACHE_VALUE); // This is where my thread gets stuck
于 2012-05-09T01:12:21.003 回答
0

当您记录一个整数而不是一个对象时,即。一个 NSString,你应该使用 %d(十进制)占位符而不是 %@(对象)。

NSLog(@"Value: %d", CACHE_VALUE);
于 2012-05-09T01:13:58.447 回答