类中的Objective-C int数据类型给出了EXC\u BAD\u访问错误
我目前正在学习Objective-C。我创建了一个类来保存有关汽车的信息(BasicCar)。还创建了一个子类来保存汽车的颜色和车门数量(ExtendedCar)。所有属性均为文本(类中的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
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]);