[新手求助]使用点运算符调用set方法提示错误

刚开始学习Obj-C,练习时遇到一个错误,无法用点运算符调用设置的set方法,代码如下:

//  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 的代码就不贴了,错误代码也贴在上面。麻烦大家帮忙指点迷津,谢谢。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值