可以将int值分配给id类型+ Objective c

tek*_*ek3 14 objective-c

我想知道这项任务是否正确

id var = 9;
Run Code Online (Sandbox Code Playgroud)

var会被赋值9还是我们必须包装在像NSNumber这样的包装类中?

Sve*_*ven 42

9是整数文字,它不是对象.id是指向对象的指针.如果你需要传递一个整数作为对象(类型id),你必须将它包装在一个NSNumber像这样的对象中:

id var = [NSNumber numberWithInteger: 9];
Run Code Online (Sandbox Code Playgroud)


mou*_*iel 12

这是可能的,但它是不正确的:

warning: initialization makes pointer from integer without a cast
Run Code Online (Sandbox Code Playgroud)

An id是指向对象的指针,而不是整数.

  • 您打算使用地址9处的可用对象吗?你不太可能被允许这样做.
  • 你只是想用一个id容器来携带一个整数吗?你应该使用NSNumber.
  • 你期望赋值会创建一个包含9的对象吗?这不是这样的.