【发布时间】:2016-09-29 05:25:11
【问题描述】:
【问题讨论】:
-
因为你传递了一个无效的参数?
-
它在等待一个对象,而你放置了一个原始 int。改用
%d,而不是@(2)。 -
了解详情请查看documentation
标签: ios objective-c xcode runtime
【问题讨论】:
%d,而不是@(2)。
标签: ios objective-c xcode runtime
id 是一个指向 Objective-C 对象的指针。前任。 NSString * 或 NSDate *。因此,当您使用%@ 时,编译器需要一个指向存储对象的内存地址的指针。
int 是“原始”值类型。它不是一个对象。它是存储在内存中的实际值,直接传递给 NSLog 语句中的参数。
它崩溃的原因是因为您将值 2 传递给正在寻找指向内存地址的指针的占位符。这就是“不良访问”的意思。 %@ 找不到任何东西,因为您没有提供准确的内存地址指针。
这里的解决方法是使用
NSLog(@"%d",2);
【讨论】:
请使用
NSLog(@"%d",2);
2 是一个 int 值
%@ 用于 id 类型
【讨论】: