Iphone 所选批注存在问题
:) 我在尝试检索所选注释的属性时遇到了一个非常奇怪的问题。以下是我的问题的简短描述: 我将所选注释数组的第一个对象传递给一个新数组,因为它是我唯一需要的对象(根据Apple doc,将所选注释数组传递给一个新数组只会选择第一个对象。但是我尝试直接从索引路径0处的所选注释数组中提取对象,这是相同的问题) 然后我将对象转换为自定义注释对象(因为这是对象应该是的) 之后,我尝试访问自定义注释临时对象的属性。这就是一切都会松动的时候。对象的NSLog仅显示内存地址。文本属性为空。所以基本上我无法访问它 我将感谢任何关于我做错了什么或我应该使用什么方法的帮助。 谢谢你 代码如下:Iphone 所选批注存在问题,iphone,objective-c,ios,mkannotationview,Iphone,Objective C,Ios,Mkannotationview,:) 我在尝试检索所选注释的属性时遇到了一个非常奇怪的问题。以下是我的问题的简短描述: 我将所选注释数组的第一个对象传递给一个新数组,因为它是我唯一需要的对象(根据Apple doc,将所选注释数组传递给一个新数组只会选择第一个对象。但是我尝试直接从索引路径0处的所选注释数组中提取对象,这是相同的问题) 然后我将对象转换为自定义注释对象(因为这是对象应该是的) 之后,我尝试访问自定义注释临时对象的属性。这就是一切都会松动的时候。对象的NSLog仅显示内存地址。文本属性为空。所以基本上我无法访问它
-(void) mapView:(MKMapView *)aMapView didSelectAnnotationView:(MKAnnotationView *)view
{
if ([view isUserInteractionEnabled])
// NSLog(@"Tapped!!!");
{
NSArray* selectedAnnotation=mapView.selectedAnnotations;
CustomAnnotations *selectedAnn=[selectedAnnotation objectAtIndex:0];
NSLog(@"selected annotation text is %@", selectedAnn.text);
我的自定义注释类有一个坐标和一个文本属性,并使用以下代码将其放置在地图上:
CustomAnnotations* commentAnnotation = [[[CustomAnnotations alloc] initWithLocation:mapView.userLocation.location.coordinate andTitle:@"comment" andText:text]autorelease];
[mapView addAnnotation:commentAnnotation];
此外,注释视图具有以下编码:
-(MKAnnotationView *) mapView:(MKMapView *) aMapView viewForAnnotation:(id<MKAnnotation>)annotation
{
if ([annotation isKindOfClass:[MKUserLocation class]])
return nil;
MKAnnotationView *customAnnotation = (MKAnnotationView*)[mapView dequeueReusableAnnotationViewWithIdentifier:@"pin"];
if(!customAnnotation)
{
customAnnotation = [[[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"pin"]autorelease];
}
customAnnotation.centerOffset=CGPointMake(10, -30);
if ([annotation title]==@"comment")
{
customAnnotation.userInteractionEnabled=YES;
customAnnotation.image=[UIImage imageNamed:@"NewCommentsPin.png"];
}
return customAnnotation;
}
-(MKAnnotationView*)映射视图:(MKMapView*)aMapView视图用于注释:(id)注释
{
if([annotation isKindOfClass:[MKUserLocation类]])
返回零;
MKAnnotationView*customAnnotation=(MKAnnotationView*)[mapView dequeueReusableAnnotationViewWithIdentifier:@“pin”];
如果(!customAnnotation)
{
customAnnotation=[[MKAnnotationView alloc]initWithAnnotation:annotation重用标识符:@“pin”]自动释放];
}
customAnnotation.centerOffset=CGPointMake(10,-30);
如果([注释标题]=@“注释”)
{
customAnnotation.userInteractionEnabled=是;
customAnnotation.image=[UIImage ImageName:@“NewCommentsPin.png”];
}
返回自定义注释;
}
任何帮助都将不胜感激
我解决了这个问题:我的自定义注释类正在释放dealloc中的文本。
我还有很长的路要走,直到我知道什么时候发布,什么时候不发布,但每次只执行一步!) 这是您的
发布
备忘单
当您创建一个对象,并且该对象包含任何单词new
,alloc
,
复制
或在构造函数中保留
,然后您拥有它,并且
如果不再需要引用,请释放它