关于objectAtIndex的返回值

时间:2011-10-09 03:51:31

标签: iphone objective-c nsmutablearray

    NSLog(@" --- object id = %ld --- ", 
          (long) [mp_list objectAtIndex : 0]);     

    target_coordinate_2D = [[mp_list objectAtIndex : 0] coordinate];

    // Some test code here which verifies that target_coordinate_2D   
    // gets assigned a valid "coordinate" value.

    [mapView addAnnotation : [mp_list objectAtIndex : 0]];

考虑以上3个陈述:

根据文档,NSArray的方法“objectAtIndex”应该返回一个对象。我的理解是返回的值是指向对象的数字指针。

但我得到的是:

--- object id = 0 ---
'NSInvalidArgumentException', reason: '-[... addObject:]: attempt to insert nil'

我的问题是:

1

为什么“对象ID”为零?由于target_coordinate_2D被赋予了有效值, [mp_list objectAtIndex:0]确实应该是一个有效“坐标”的有效对象 属性。

2

在最后一个语句中,我希望将mp_list中的对象添加到mapView中。 NS例外 模拟器抛出的是“[mp_list objectAtIndex:0]”的事实 确实没有。因此,我必须有一些关于NSArray的错过。应该是什么 完成以便将对象分配给另一个数组中的数组?

希望在这个领域有人知道可以帮助......

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSArray_Class/NSArray.html

2 个答案:

答案 0 :(得分:4)

听起来mp_list本身就是nil,这就是[mp_list objectAtIndex:0]返回nil的原因(因为消息nil返回nil)。

答案 1 :(得分:0)

不确定这是否正确,但是在你的NSLog中,你将对象打印出来的时间很长?据我所知,你只能把对象放在NSArray中,你不能把原始类型放在它们中。所以它可能是你在数组中放入的数据。