刚开始学习Obj-C,练习时遇到一个错误,无法用点运算符调用设置的set方法,代码如下:
代码中其他两个类Engine 和 Lamp 的代码就不贴了,错误代码也贴在上面。麻烦大家帮忙指点迷津,谢谢。
// main.m
// 09 Car_Engine
#import <Foundation/Foundation.h>
#import "Car.h"
int main(int argc, const char * argv[]) {
Engine *engine1 = [[Engine alloc]initWithModel:@"V8" WithCapacity:@"Yamaha"];
Lamp *lamp1 = [[Lamp alloc]initWithWattage:89.44];
Car *car1 = [[Car alloc]initWithEngine:engine1 WithLamp:lamp1];
//不能使用点运算符调用set方法
// car1.setName = @"保时捷";
// 错误提示 Property 'setName' not found on object of type 'Car'
//可以正常运行
[car1 setName:@"法拉利"];
[car1 setLicence:@"J495k2"];
[car1 run];
[car1 stop];
return 0;
}
//
// Car.h
// 09 Car_Engine
#import <Foundation/Foundation.h>
#import "Engine.h"
#import "Lamp.h"
@interface Car : NSObject {
NSString *_name;
NSString *_licence;
Engine *_engine;
Lamp *_lamp;
}
- (id)initWithEngine:(Engine *)engine WithLamp:(Lamp *)lamp;
- (void)setName:(NSString *)name;
- (void)setLicence:(NSString *)licence;
- (void)run;
- (void)stop;
@end
//
// Car.m
// 09 Car_Engine
#import "Car.h"
@implementation Car
- (id)initWithEngine:(Engine *)engine WithLamp:(Lamp *)lamp{
self = [super init];
if (self) {
_engine = engine;
_lamp = lamp;
}
return self;
}
- (void)setName:(NSString *)name {
_name = name;
}
- (void)setLicence:(NSString *)licence {
_licence = licence;
}
- (void)run {
NSLog(@"车牌照为:%@ 的 %@ 汽车启动了 ",_licence,_name);
[_engine turn];
[_lamp light];
}
- (void)stop {
NSLog(@"车牌照为:%@ 的 %@ 汽车熄灭了 ",_licence,_name);
[_engine stopTurn];
[_lamp dark];
}
@end
代码中其他两个类Engine 和 Lamp 的代码就不贴了,错误代码也贴在上面。麻烦大家帮忙指点迷津,谢谢。