2012-01-15 11 views
3

Twitterの傾向を仮想化するアプリケーションを開発中です。私は場所の場所を取得し、それぞれの注釈を作成します。残念ながら、注釈をタップすると、アプリケーションがクラッシュし、main.mファイルにsigabrtエラーが発生します。私の最初の試合ではうまくいったが、そのたびにエラーが出る。私は何が変わったのか分からない。MapKitアノテーションをタップするとアプリケーションがクラッシュする

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; 
} 
+4

"私は何が変わったのか分かりません。"バージョンコントロールを使用します。 –

+0

エラーメッセージが表示されているはずです(おそらく、認識できないセレクタについてです)。投稿してください。 – DarkDust

+0

xcodeでプロジェクト内のエラーメッセージ – uyqusuz

答えて

2

ほとんどの場合、あなたがにお電話でnameようNSNumberのインスタンスを渡します3210。したがって、name変数にNSStringが含まれていることに注意する必要があります。

+0

"NSNumberのインスタンスを名前として渡す可能性が高い"ということを理解できません。 nameはnsstringとして定義されており、アノテーションをマップビューに配置できますが、アノテーションをタップするとエラーが発生します。あなたがコード上で何を変更すべきかについて、より具体的にすることができますか? – uyqusuz

+0

あなたはNSStringであると定義しましたが、代わりにNSNumberを渡したのでクラッシュしたようです。これは、 ' - (id)initWithName:(NSString *)name address:(NSString *)アドレス座標:(CLLocationCoordinate2D)座標'にログメッセージを追加することで簡単に確認できます。NSLog(@ "Name" "(クラス%@)"、名前、[名前クラス]); ' – DarkDust

+0

クラスはNSCFStringです – uyqusuz

関連する問題