NSStringをNSStringにコピー中にsigarbtエラーが発生する

PlistReader *pList = [[PlistReader alloc] init];
    [pList initWithFileName:@"CountryDetails"];
    CountryClass *objcountry =(CountryClass*) [pList getCountryInfoById:countryId];
    CCSprite *flag = [CCSprite spriteWithFile:objcountry.ImageUrl];
    flag.position = ccp(200, 265);
    flag.scale = .255;
    NSString *tempdata = objcountry.ShortDetail;//error line sigabrt
    TextViewTopFlagData = [[UITextView alloc]init];
    TextViewTopFlagData.text = [NSString stringWithFormat:@"this is pakistan"];//countryInfo.ShortDetail;
    TextViewTopFlagData.frame = CGRectMake(260,17, 105, 75);
    TextViewTopFlagData.backgroundColor = [UIColor clearColor];
    [TextViewTopFlagData setEditable:NO];

こんにちは、私はそれがobjcountry.ShortDetailもNSStringの型ですので、ここでエラーが発生しているsigabrt私はそれを言及ラインでエラーsigabrtを取得しています

スプライト行の前にNSString * tempdata = objcountry.ShortDetail; //エラー行sigabrtを置くと、エラーは発生しませんが、スプライト行の後ろに置くとエラーが発生します。

ここにはcountryClass構​​造があります

//CountryClass.h

//
//  CountryClass.h
//  NationalAntemsAndFlags
//
//  Created by mac on 12/17/11.
//  Copyright (c) 2011 __MyCompanyName__. All rights reserved.
//

#import 

@interface CountryClass : NSObject
{
    NSString *Name ;
    NSString *ImageUrl;
    NSString *AnthemUrl;
    NSString *ShortDetail;
    NSString *completeDetails;
    int LocationX ;
    int LocationY ;


}
@property (nonatomic,retain) IBOutlet NSString *Name;
@property (nonatomic,retain) IBOutlet NSString *ImageUrl;
@property (nonatomic,retain) IBOutlet NSString *AnthemUrl;
@property (nonatomic,retain) IBOutlet NSString *ShortDetail;
@property (nonatomic,retain) IBOutlet NSString *completeDetails;
@property (nonatomic) IBOutlet int LocationY;
@property (nonatomic) IBOutlet int LocationX;




@end

//countryClass.m

//
//  CountryClass.m
//  NationalAntemsAndFlags
//
//  Created by mac on 12/17/11.
//  Copyright (c) 2011 __MyCompanyName__. All rights reserved.
//

#import "CountryClass.h"

@implementation CountryClass

@synthesize Name,ImageUrl,AnthemUrl,ShortDetail,completeDetails,LocationX,LocationY;

@end

これはcountryClass構​​造体で、私は[countryInfo retain]にしようとしましたが、何も起こりません

0
あなたは私たちを見せてくれますか?(CountryClass *)getCountryInfoById:とCountryClass.h?
追加された 著者 Jesse Black,
たぶん、スプライトの読み込みによって、自動解放プールが空になる可能性があります。 [objcountry retain]を試してください。 NSString * tempdataの後のCCSprite *フラグと[objcountry release]の前に...もしうまくいかなければ、少しだけコードを表示し、クラッシュ時にデバッガの出力を表示する必要があります
追加された 著者 Jesse Black,
私は今クラスのチェックを提供する
追加された 著者 precious.logic,

1 答え

objcountry is not an actual instance of a CountryClass, it's some other type of object (whatever [pList getCountryInfoById:country] returns). If it's not obvious from the code what type of object it is, try printing it out with NSLog(@"objcountry is a %@", [objcountry class]);.

objcountry.ShortDetail という表現は、プロパティアクセサメソッド [objcountry ShortDetail] の構文的砂糖です。ランタイムがメッセージ ShortDetail をオブジェクトに送信しようとしたときに、オブジェクトがそのメッセージに応答しない場合、恐れられた NSInvalidArgumentException は "クラス "(これはデバッグコンソールに表示されます)。誰もその例外をキャッチしない場合(よくあることですが)、ランタイムは abort SIGABRT シグナルでアプリケーションを終了させる(3) メソッドです。

2
追加された
返信ありがとうが、NSString * tempdata = objcountry.ShortDetail; //エラー行sigabrtをスプライト行の前に置くとエラーは発生しませんが、スプライト行の後ろに置くとエラーが発生しますので、
追加された 著者 precious.logic,