传递后,CLLocationCoordinate2D会获得奇怪的值

时间:2013-10-29 12:56:49

标签: ios objective-c object null cllocationcoordinate2d

这是我第一次在目标C中为IOS编程,所以请耐心等待。

基本上,我的CLLocationCoordinate2D值在传递对象后会自行更改。

首先,此方法应模拟数据库

/* *
 * Static getMarkers
 * Returns an NSMutableArray of CustomMarkers
 * */
+ (NSMutableArray*) getMarkers
{
    NSMutableArray * markers = [[NSMutableArray alloc] init];


    CLLocationCoordinate2D projection = CLLocationCoordinate2DMake(50.850282, 4.351932);
    CustomMarker *m = [[CustomMarker alloc] initWithTEN:@"Brussels"
                                                TFR:@"Bruxelles Centre"
                                                TNL:@"Brussel Centrum"
                                           Position:&projection
                                           Filename:@"FILE.TXT"
                                         MarkerType:Verhaal];
    [markers addObject:m];

    return markers;
}

当我在这些线上设置断点时,一切都很完美正确。

然后当我尝试在视图控制器的循环中使用标记时,它变得很丑陋。

// Load markers from datahelper
NSMutableArray * markers = [DataHelper getMarkers];


// Put the loaded markers on the map
for (CustomMarker *lm in markers) {

此处,只要从datahelper接收到标记,位置就会错误。

我遇到的另一个问题是enum MarkerType从一开始就是零。

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

您的参数不应为(CLLocationCoordinate2D*)position,而应为(CLLocationCoordinate2D)position。然后你可以停止传递指针。

您的问题更有可能在gmsm.position = *(lm.Position);(*lm.Position).latitude, (*lm.Position).longitude左右。基本上,停止使用指向位置结构的指针,因为你正在混淆并访问错误的内存位置(看起来像解引用CustomMarker实例的有效指针)。

答案 1 :(得分:0)

如果您将投影作为&projection传递,则通常意味着传递给它的initWithTEN...方法可能由于某种原因而想要更改投影。检查文档或者如果您有来源,请检查该方法。