ios - 为什么 "format specifies type id but the argument has type int"崩溃

标签 ios objective-c xcode runtime

NSLog(@"%@",2);

警告:format 指定类型 id 但参数的类型为 int

输出 enter image description here

Xcode 显示警告,但在运行时,为什么这段代码会导致崩溃?谢谢!

最佳答案

id是一个指向 Objective-C 对象的指针。前任。 NSString *NSDate * .所以当你使用 %@ ,编译器需要一个指向存储对象的内存地址的指针。

一个 int是一种“原始”值类型。它不是一个对象。它是存储在内存中的实际值,直接传递给 NSLog 语句中的参数。

它崩溃的原因是因为您将值 2 传递给正在寻找指向内存地址的指针的占位符。这就是“不良访问”的意思。 %@找不到任何东西,因为您没有提供准确的内存地址指针。

这里的修复是使用

NSLog(@"%d",2);

关于ios - 为什么 "format specifies type id but the argument has type int"崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37541628/

相关文章:

ios - 错误-ITMS-9000 : Bundle identifier cannot be changed

ios - 如何识别APP运行环境包括Test Flight

ios - 注意到场景包中节点位置进入某个边界框了吗?

c++ - 在 Mac 上检索 RAM 信息?

iphone - UIScrollView 对象问题

ios - UIPopoverController 解雇出现奇怪的延迟

ios - Xcode 6.3.2 - iOS - 使用自动布局定位图像和文本

swift - Xcode 11.4 beta 在@Published 属性订阅上崩溃。这是怎么回事?

ios - 使用iOS OTA安装应用程序时如何将ipa保留在webroot之外?

ios - 是否值得在 iOS6 上添加 armv7s 切片?