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

时间:2010-10-15 14:22:30

标签: objective-c

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

id var = 9;

var将被赋值为9还是我们必须包装在一些包装类中,如NSNumber?

3 个答案:

答案 0 :(得分:42)

9是整数文字,不是对象。 id是指向对象的指针。如果需要将整数作为对象传递(类型id),则必须将其包含在NSNumber对象中,如下所示:

id var = [NSNumber numberWithInteger: 9];

答案 1 :(得分:12)

有可能,但不正确:

warning: initialization makes pointer from integer without a cast

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

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

答案 2 :(得分:2)

id var = @9;也有效。 @9相当于[NSNumber numberWithInt:9]