我正在开发应用程序以虚拟化推特趋势。我获取了地点的位置并为每个地点创建了注释。不幸的是,当我点击注释时,应用程序崩溃并在main.m文件中出现sigabrt错误。在我的第一次运行它工作,但在那之后每次我得到错误。我不知道我改变了什么。
2012-01-15 12:34:29.786 twittertrends[1248:ef03] -[NSCFNumber stringByStandardizingWhitespace]: unrecognized selector sent to instance 0x5854b10
2012-01-15 12:34:29.790 twittertrends[1248:ef03] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSCFNumber stringByStandardizingWhitespace]: unrecognized selector sent to instance 0x5854b10'
*** Call stack at first throw:
(
0 CoreFoundation 0x012725a9 __exceptionPreprocess + 185
1 libobjc.A.dylib 0x013c6313 objc_exception_throw + 44
2 CoreFoundation 0x012740bb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
3 CoreFoundation 0x011e3966 ___forwarding___ + 966
4 CoreFoundation 0x011e3522 _CF_forwarding_prep_0 + 50
5 UIKit 0x005f4340 -[UICalloutView setSubtitle:animated:] + 88
6 UIKit 0x005f4010 -[UICalloutView setSubtitle:] + 49
7 MapKit 0x003630ac -[MKAnnotationContainerView _showBubbleForAnnotationView:bounce:scrollToFit:userInitiated:avoid:] + 537
8 MapKit 0x003643ed -[MKAnnotationContainerView _setSelectedAnnotationView:bounce:pressed:scrollToFit:userInitiated:avoid:] + 653
9 MapKit 0x0035d4bc -[MKAnnotationContainerView _setSelectedAnnotationView:bounce:pressed:scrollToFit:userInitiated:] + 144
10 MapKit 0x00334ab3 -[MKMapView handleTap:] + 459
11 UIKit 0x007554f2 -[UIGestureRecognizer _updateGestureWithEvent:] + 730
12 UIKit 0x007514fe -[UIGestureRecognizer _delayedUpdateGesture] + 47
13 UIKit 0x00757afc _UIGestureRecognizerUpdateObserver + 584
14 CoreFoundation 0x0125389b __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 27
15 CoreFoundation 0x011e86e7 __CFRunLoopDoObservers + 295
16 CoreFoundation 0x011b11d7 __CFRunLoopRun + 1575
17 CoreFoundation 0x011b0840 CFRunLoopRunSpecific + 208
18 CoreFoundation 0x011b0761 CFRunLoopRunInMode + 97
19 GraphicsServices 0x01e501c4 GSEventRunModal + 217
20 GraphicsServices 0x01e50289 GSEventRun + 115
21 UIKit 0x004d2c93 UIApplicationMain + 1160
22 twittertrends 0x00002669 main + 121
23 twittertrends 0x000025e5 start + 53
)
#import <Foundation/Foundation.h>
#import "Mapkit/Mapkit.h"
@interface AvailablePlaces : NSObject <MKAnnotation>{
NSString *_name;
NSString *_address;
CLLocationCoordinate2D _coordinate;
}
@property (copy) NSString *name;
@property (copy) NSString *address;
@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;
- (id)initWithName:(NSString*)name address:(NSString*)address coordinate:(CLLocationCoordinate2D)coordinate;
@end
#import "AvailablePlaces.h"
@implementation AvailablePlaces
@synthesize name = _name;
@synthesize address = _address;
@synthesize coordinate = _coordinate;
- (id)initWithName:(NSString*)name address:(NSString*)address coordinate:(CLLocationCoordinate2D)coordinate {
if ((self = [super init])) {
self.name = [name copy];
self.address = [address copy];
_coordinate = coordinate;
}
return self;
}
- (NSString *)title {
return _name;
}
- (NSString *)subtitle {
return _address;
}
- (void)dealloc
{
[_name release];
_name = nil;
[_address release];
_address = nil;
[super dealloc];
}
@end
--- viewcontroller.m -----
CLLocationCoordinate2D coordinate;
coordinate.latitude = latitude.doubleValue;
coordinate.longitude = longitude.doubleValue;
AvailablePlaces *annotation = [[[AvailablePlaces alloc] initWithName:name address:woeid coordinate:coordinate] autorelease];
[_mapView addAnnotation:annotation];
----- ----------的main.m
#import <UIKit/UIKit.h>
int main(int argc, char *argv[])
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}
答案 0 :(得分:2)
您最有可能在NSNumber
的通话中将name
的实例作为initWithName:address:coordinate:
传递。因此,您需要注意,name
变量包含NSString
。