- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
我有一个用于显示 map 和自定义注释的应用程序。当用户触摸注释时,我的应用程序崩溃了。它只发生在 iOS 7 中。它在 iOS 6 和 iOS 5 上运行良好。
以下是控制台中显示的崩溃报告:
ERROR: Trying to select an annotation which has not been added
-[__NSSetM coordinate]: unrecognized selector sent to instance 0x18c9d580
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSSetM coordinate]: unrecognized selector sent to instance 0x18c9d580'
*** First throw call stack:
(
0 CoreFoundation 0x020415e4 __exceptionPreprocess + 180
1 libobjc.A.dylib 0x016918b6 objc_exception_throw + 44
2 CoreFoundation 0x020de903 -[NSObject(NSObject) doesNotRecognizeSelector:] + 275
3 CoreFoundation 0x0203190b ___forwarding___ + 1019
4 CoreFoundation 0x0206e46e __forwarding_prep_1___ + 14
5 MapKit 0x000de10c _Z21_insertionNodeForItemP11objc_objectP14MKQuadTrieNode + 50
6 MapKit 0x000de428 _Z9_containsP11objc_objectP14MKQuadTrieNode + 27
7 MapKit 0x000de8ed -[MKQuadTrie contains:] + 39
8 MapKit 0x000d4918 -[MKAnnotationManager selectAnnotation:animated:avoid:] + 116
9 MapKit 0x00090789 -[MKMapView handleTap:] + 541
10 UIKit 0x0056ae8c _UIGestureRecognizerSendActions + 230
11 UIKit 0x00569b00 -[UIGestureRecognizer _updateGestureWithEvent:buttonEvent:] + 383
12 UIKit 0x0056b56d -[UIGestureRecognizer _delayedUpdateGesture] + 60
13 UIKit 0x0056eacd ___UIGestureRecognizerUpdate_block_invoke + 57
14 UIKit 0x0056ea4e _UIGestureRecognizerRemoveObjectsFromArrayAndApplyBlocks + 317
15 UIKit 0x00565148 _UIGestureRecognizerUpdate + 199
16 CoreFoundation 0x020094ce __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 30
17 CoreFoundation 0x0200941f __CFRunLoopDoObservers + 399
18 CoreFoundation 0x01fe7344 __CFRunLoopRun + 1076
19 CoreFoundation 0x01fe6ac3 CFRunLoopRunSpecific + 467
20 CoreFoundation 0x01fe68db CFRunLoopRunInMode + 123
21 GraphicsServices 0x01f6c9e2 GSEventRunModal + 192
22 GraphicsServices 0x01f6c809 GSEventRun + 104
23 UIKit 0x001f2d3b UIApplicationMain + 1225
24 CustomMKAnnotationView 0x0000285a main + 170
25 CustomMKAnnotationView 0x000027a5 start + 53
)
libc++abi.dylib: terminating with uncaught exception of type NSException
我按照以下方式创建了代码:
-(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view
{
if ([view.annotation isKindOfClass:[BasicMapAnnotation class]])
{
if (_calloutAnnotation.coordinate.latitude == view.annotation.coordinate.latitude&&
_calloutAnnotation.coordinate.longitude == view.annotation.coordinate.longitude)
{
return;
}
if (_calloutAnnotation)
{
[mapView removeAnnotation:_calloutAnnotation];
_calloutAnnotation = nil;
}
_calloutAnnotation = [[[CalloutMapAnnotation alloc]
initWithLatitude:view.annotation.coordinate.latitude
andLongitude:view.annotation.coordinate.longitude]autorelease];
[mapView addAnnotation:_calloutAnnotation];
[mapView setCenterCoordinate:_calloutAnnotation.coordinate animated:YES];
}else
{
if([delegate respondsToSelector:@selector(customMKMapViewDidSelectedWithInfo:)])
{
[delegate customMKMapViewDidSelectedWithInfo:@"Annotation clicked"];
}
}
}
-(void)mapView:(MKMapView *)mapView didDeselectAnnotationView:(MKAnnotationView *)view
{
if (_calloutAnnotation&& ![view isKindOfClass:[CallOutAnnotationVifew class]])
{
if (_calloutAnnotation.coordinate.latitude == view.annotation.coordinate.latitude&&
_calloutAnnotation.coordinate.longitude == view.annotation.coordinate.longitude)
{
[mapView removeAnnotation:_calloutAnnotation];
_calloutAnnotation = nil;
}
}
}
-(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{
if ([annotation isKindOfClass:[CalloutMapAnnotation class]])
{
CallOutAnnotationVifew *annotationView = (CallOutAnnotationVifew *)[mapView dequeueReusableAnnotationViewWithIdentifier:@"CalloutView"];
if (!annotationView)
{
annotationView = [[[CallOutAnnotationVifew alloc] initWithAnnotation:annotation reuseIdentifier:@"CalloutView"] autorelease];
JingDianMapCell *cell = [[[NSBundle mainBundle] loadNibNamed:@"JingDianMapCell" owner:self options:nil] objectAtIndex:0];
cell.titleLable.text = @"Testing";
[annotationView.contentView addSubview:cell];
}
return annotationView;
}else if ([annotation isKindOfClass:[BasicMapAnnotation class]])
{
MKAnnotationView *annotationView =[self.mapView dequeueReusableAnnotationViewWithIdentifier:@"CustomAnnotation"];
if (!annotationView)
{
annotationView = [[[MKAnnotationView alloc] initWithAnnotation:annotation
reuseIdentifier:@"CustomAnnotation"] autorelease];
annotationView.canShowCallout = NO;
annotationView.image = [UIImage imageNamed:@"pin.png"];
}
return annotationView;
}
return nil;
}
在 didSelectAnnotationView 和 didDeselectAnnotationView 中,我添加了新的注释 View 并删除了旧的注释 View 。注释 View 是自定义类。而_calloutAnnotation 是CalloutMapAnnotation 的一个对象,CalloutMapAnnotation 是用于添加注解的NSObject 类。
最佳答案
_calloutAnnotation
不包含注释 View 。我认为你有这样的代码 @prorerty (weak, nonatomic) MKAnnotation * calloutAnnotation;
改变 weak
至 strong
应该有帮助。
关于ios - 用户触摸注释时出现无法识别的选择器崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20004084/
我之前让 dll 注入(inject)器变得简单,但我有 Windows 7,我用 C# 和 C++ 做了它,它工作得很好!但是现在当我在 Windows 8 中尝试相同的代码时,它似乎没有以正确的方
我正在尝试制作一个名为 core-splitter 的元素,该元素在 1.0 中已弃用,因为它在我们的项目中起着关键作用。 如果您不知道 core-splitter 的作用,我可以提供一个简短的描述。
我有几个不同的蜘蛛,想一次运行所有它们。基于 this和 this ,我可以在同一个进程中运行多个蜘蛛。但是,我不知道如何设计一个信号系统来在所有蜘蛛都完成后停止 react 器。 我试过了: cra
有没有办法在达到特定条件时停止扭曲 react 器。例如,如果一个变量被设置为某个值,那么 react 器应该停止吗? 最佳答案 理想情况下,您不会将变量设置为一个值并停止 react 器,而是调用
https://code.angularjs.org/1.0.0rc9/angular-1.0.0rc9.js 上面的链接定义了外部js文件,我不知道Angular-1.0.0rc9.js的注入(in
我正在尝试运行一个函数并将服务注入(inject)其中。我认为这可以使用 $injector 轻松完成.所以我尝试了以下(简化示例): angular.injector().invoke( [ "$q
在 google Guice 中,我可以使用函数 createInjector 创建基于多个模块的注入(inject)器。 因为我使用 GWT.create 在 GoogleGin 中实例化注入(in
我在 ASP.NET Core 1.1 解决方案中使用配置绑定(bind)。基本上,我在“ConfigureServices Startup”部分中有一些用于绑定(bind)的简单代码,如下所示: s
我在 Spring MVC 中设置 initBinder 时遇到一些问题。我有一个 ModelAttribute,它有一个有时会显示的字段。 public class Model { privat
我正在尝试通过jquery post发布knockoutjs View 模型 var $form = $('#barcodeTemplate form'); var data = ko.toJS(vm
如何为包含多态对象集合的复杂模型编写自定义模型绑定(bind)程序? 我有下一个模型结构: public class CustomAttributeValueViewModel { publi
您好,我正在尝试实现我在 this article 中找到的扩展方法对于简单的注入(inject)器,因为它不支持开箱即用的特定构造函数的注册。 根据这篇文章,我需要用一个假的委托(delegate)
你好,我想自动注册我的依赖项。 我现在拥有的是: public interface IRepository where T : class public interface IFolderReposi
我正在使用 Jasmine 测试一些 Angular.js 代码。为此,我需要一个 Angular 注入(inject)器: var injector = angular.injector(['ng'
我正在使用 Matlab 代码生成器。不可能包含代码风格指南。这就是为什么我正在寻找一个工具来“ reshape ”、重命名和重新格式化生成的代码,根据我的: 功能横幅约定 文件横幅约定 命名约定 等
这个问题在这里已经有了答案: Where and why do I have to put the "template" and "typename" keywords? (8 个答案) 关闭 8
我开发了一种工具,可以更改某些程序的外观。为此,我需要在某些进程中注入(inject)一个 dll。 现在我基本上使用这个 approach .问题通常是人们无法注入(inject) dll,因为他们
我想使用 swing、spring 和 hibernate 编写一个 java 应用程序。 我想使用数据绑定(bind)器用 bean 的值填充 gui,并且我还希望它反射(reflect) gui
我有这段代码,当两个蜘蛛完成后,程序仍在运行。 #!C:\Python27\python.exe from twisted.internet import reactor from scrapy.cr
要点是 Spring Batch (v2) 测试框架具有带有 @Autowired 注释的 JobLauncherTestUtils.setJob。我们的测试套件有多个 Job 类提供者。因为这个类不
我是一名优秀的程序员,十分优秀!