最佳答案
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/