【发布时间】:2014-11-17 10:32:28
【问题描述】:
这是我尝试为地图上的图钉设置图钉注释视图的代码。我正在使用 MKPinAnnotationView 上已有的默认引脚。
#import "ViewController.h"
#import "AKNeutralPin.h" // NSObject <MKAnnotation> class
@interface ViewController () <MKMapViewDelegate>
...
@implementation
...
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation {
if ([annotation isKindOfClass:[AKNeutralPin class]]) {
MKPinAnnotationView *neutralPinView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:@"neutral"];
neutralPinView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"neutral"];
neutralPinView.pinColor = MKPinAnnotationColorPurple;
neutralPinView.canShowCallout = YES;
return neutralPinView;
}
return nil;
}
问题是代码在模拟器上运行得很好,但在设备上却不行。 显示错误:
ARC semantic issue no visible @interface for 'MKPinAnnotationView' declares the selector 'initWithAnnotation:reuseIdentifier:.
我检查了 AKNeutralPin.h 和 .m 的文件路径。它们位于正确的文件路径中。不知道我在这里缺少什么。非常感谢任何帮助!
更新:我已将代码导出到 .ipa 文件并安装在设备上。它运作良好。所以我认为问题不在于代码,而在于我对构建的架构所做的一些设置更改不知道。
【问题讨论】:
-
@OnikIV 的答案与您的“ARC 语义”错误无关,但 确实 指出了所示代码中的另一个缺陷(调用了 dequeue,但从未使用过结果因为那样它会立即分配一个新的)。对于“ARC 语义”错误,您能否显示文件使用的
#import或@class行?您是否有您的自己的 类名为MKPinAnnotationView?您是否尝试过清理和重建项目? -
我只有注解类,没有注解视图类。我已经用导入类更新了问题。
标签: ios objective-c automatic-ref-counting xcode6 mkannotationview