Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
类中的Objective-C int数据类型给出了EXC\u BAD\u访问错误_Objective C_Class - Fatal编程技术网

类中的Objective-C int数据类型给出了EXC\u BAD\u访问错误

类中的Objective-C int数据类型给出了EXC\u BAD\u访问错误,objective-c,class,Objective C,Class,我目前正在学习Objective-C。我创建了一个类来保存有关汽车的信息(BasicCar)。还创建了一个子类来保存汽车的颜色和车门数量(ExtendedCar)。所有属性均为文本(NSString),但门的数量除外,其类型为int 我的家长班级: #import <Foundation/Foundation.h> #import <cocoa/cocoa.h> @interface BasicCar : NSObject { NSString *make; NSSt

我目前正在学习Objective-C。我创建了一个类来保存有关汽车的信息(BasicCar)。还创建了一个子类来保存汽车的颜色和车门数量(ExtendedCar)。所有属性均为文本(
NSString
),但门的数量除外,其类型为
int

我的家长班级:

#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

为什么会发生这种情况?我能做些什么来解决这个问题?当我删除“doors”部分时,它不会发生,因此它必须处理“int”数据

格式
%@
仅用于输出目标C对象,而不是整数


根据苹果公司的说法,输出整数的正确格式是
%d

,正如杰里米在评论中所说,您使用了错误的格式说明符
%@
是obj-c对象的格式说明符。这对于
make
model
color
是正确的,但对于
doors
则不正确,因为这是一个C基元数据类型(
int
)。
int
s的正确格式说明符是
%i
(或
%d

NSLog(@"Make: %@, Model: %@, Color: %@, Doors: %d \n\n",[myCar1 make],[myCar1 model],[myCar1 color], [myCar1 doors]);

NSLog(@"Make: %@, Model: %@, Color: %@, Doors: %d \n\n",[myCar2 make],[myCar2 model], [myCar2 color], [myCar2 doors]);
你应该替换

NSLog(@"Make: %@, Model: %@, Color: %@, Doors: %@ \n\n",[myCar1 make],[myCar1 model],[myCar1 color], [myCar1 doors]);


%@
已被替换为
%i
:您可以在此处找到有关说明:

退出提示:打印整数时请确保使用正确的格式说明符。使用%i而不是%@。
NSLog(@"Make: %@, Model: %@, Color: %@, Doors: %@ \n\n",[myCar1 make],[myCar1 model],[myCar1 color], [myCar1 doors]);
NSLog(@"Make: %@, Model: %@, Color: %@, Doors: %d \n\n",[myCar1 make],[myCar1 model],[myCar1 color], [myCar1 doors]);

NSLog(@"Make: %@, Model: %@, Color: %@, Doors: %d \n\n",[myCar2 make],[myCar2 model], [myCar2 color], [myCar2 doors]);
NSLog(@"Make: %@, Model: %@, Color: %@, Doors: %@ \n\n",[myCar1 make],[myCar1 model],[myCar1 color], [myCar1 doors]);
NSLog(@"Make: %@, Model: %@, Color: %@, Doors: %i \n\n",[myCar1 make],[myCar1 model],[myCar1 color], [myCar1 doors]);