这是我第一次在目标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从一开始就是零。
感谢您的帮助!
答案 0 :(得分:1)
您的参数不应为(CLLocationCoordinate2D*)position
,而应为(CLLocationCoordinate2D)position
。然后你可以停止传递指针。
您的问题更有可能在gmsm.position = *(lm.Position);
或(*lm.Position).latitude, (*lm.Position).longitude
左右。基本上,停止使用指向位置结构的指针,因为你正在混淆并访问错误的内存位置(看起来像解引用CustomMarker
实例的有效指针)。
答案 1 :(得分:0)
如果您将投影作为&projection
传递,则通常意味着传递给它的initWithTEN...
方法可能由于某种原因而想要更改投影。检查文档或者如果您有来源,请检查该方法。