現在Objective-Cを学習中です。私は車に関する情報を保持するクラスを作成しました(BasicCar)。また、車の色とドアの量(ExtendedCar)を保持する子クラスを作成しました。すべてのプロパティは、ドアの数を除いてテキスト(NSString
)です。タイプはint
です。クラス内のObjective-C intデータ型にEXC_BAD_ACCESSエラーが返される
私の親クラス:
#import <Foundation/Foundation.h>
#import <cocoa/cocoa.h>
@interface BasicCar : NSObject {
NSString *make;
NSString *model;
}
@property (readwrite, retain) NSString* make;
@property (readwrite, retain) NSString* model;
@end
#import "BasicCar.h"
@implementation BasicCar
@synthesize make;
@synthesize model;
- (id)init
{
self = [super init];
if (self) {
// Initialization code here.
}
return self;
}
@end
私の子供クラス:
#import <Foundation/Foundation.h>
#import <cocoa/cocoa.h>
#import "BasicCar.h"
@interface ExtendedCar : BasicCar {
NSString* color;
int doors;
}
@property (readwrite,retain) NSString* color;
@property (readwrite) int doors;
@end
#import "ExtendedCar.h"
@implementation ExtendedCar : BasicCar
@synthesize color;
@synthesize doors;
@end
私のメインのコード:
#import <Foundation/Foundation.h>
#import "BasicCar.h"
#import "ExtendedCar.h"
int main (int argc, const char * argv[])
{
ExtendedCar *myCar1 = [[ExtendedCar alloc]init];
NSString *carMake = @"BMW";
NSString *carModel = @"M5";
NSString *carColor = @"blue";
int carDoors = 4;
[myCar1 setMake:carMake];
[myCar1 setModel:carModel];
[myCar1 setColor:carColor];
[myCar1 setDoors:carDoors];
ExtendedCar *myCar2 = [[ExtendedCar alloc]init];
carMake = @"Hummer";
carModel = @"H3";
carColor = @"green";
carDoors = 4;
[myCar2 setMake:carMake];
[myCar2 setModel:carModel];
[myCar2 setColor:carColor];
[myCar2 setDoors:carDoors];
NSLog(@"Make: %@, Model: %@, Color: %@, Doors: %@ \n\n",[myCar1 make],[myCar1 model],[myCar1 color], [myCar1 doors]);
NSLog(@"Make: %@, Model: %@, Color: %@, Doors: %@ \n\n",[myCar2 make],[myCar2 model], [myCar2 color], [myCar2 doors]);
return 0;
}
は今、私はそれをデバッグするとき、私はXcodeでEXC_BAD_ACCESSエラーが発生しますこの行の:
NSLog(@"Make: %@, Model: %@, Color: %@, Doors: %@ \n\n",[myCar1 make],[myCar1 model],[myCar1 color], [myCar1 doors]);
なぜこれが起こっているのですか?これを解決するにはどうすればよいですか?私は 'ドア'部分を削除すると起こらないので、 'int'データで何かをしなければなりません。
ヒントを終了します:あなたはここでそのことについての説明を見つけることができますしてください整数を出力するときに正しい書式指定子を使用する。 %@の代わりに%iを使用してください。 – Jeremy