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个语句:关于objectAtIndex的返回值
根据文档中,NSArray的方法“objectAtIndex”应该返回一个对象。我的理解是返回的值是一个指向该对象的数字指针。
但我得到的是:
--- object id = 0 ---
'NSInvalidArgumentException', reason: '-[... addObject:]: attempt to insert nil'
我的问题是:
为什么 “对象ID” 是零?由于target_coordinate_2D被分配了有效值,因此 [mp_list objectAtIndex:0]的确应该是具有有效“坐标” 属性的有效对象。
在最后的发言中,我想在mp_list添加对象的MapView。仿真器抛出的NS异常 与“[mp_list objectAtIndex:0]”为 的事实一致为零。所以肯定有一些我错过了关于NSArray的东西。 为了将一个对象分配给另一个数组的数组应该是什么?
希望有人见地在这方面可以帮助...
如果您要将指针打印到某个对象,则应该使用'%p'作为格式说明符,并且不要将对象转换为'(long)',只需保留它即可。换句话说,使用'NSLog(@“---对象id =%p ---”,[mp_list objectAtIndex:0]);' –
感谢您的评论,我已将其更改为%p,现在我得到了“0x0 “而不是”0“。 – Stanley