Object-c学习笔记十二-----特性

本文介绍了在Objective-C2.0中如何使用特性(property)替代set和get方法,并展示了特性在不同数据类型和类中的应用。通过特性,简化了代码并实现了相同的功能。

前面我们在编写的时候用到了set方法和get方法。在object-c2.0中引入了特性(property)。

在头文件中修改,用到关键字@property 可以看如下代码:

@propertyfloat rainHandling;

@propertyfloat snowHandling;

//-(void) setrainHandling:(float) rainHandling;

//-(float) rainHandling;

//

//-(void) setsnowHandling:(float) snowHandling;

//-(float) snowHandling;

将set和get方法用@property替代。

实现它们的方法如下用到关键字如下@synthesize

@synthesize rainHandling;

@synthesize snowHandling;


//-(void) setrainHandling:(float)rh

//{

//    rainHandling=rh;

//}

//-(float) rainHandling

//{

//    return rainHandling;

//}

//-(void) setsnowHandling:(float)sh

//{

//    snowHandling=sh;

//}

//-(float) snowHandling

//{

//    return snowHandling;

//}

这样对比起来我们减少了不少代码,但是我们的功能仍然实现。

该技术也适用于int ,char , bool , struct 类型。甚至可以去定义一个类。

@interface Car : NSObject

{

    NSString *name;

Engine *engine;

    NSMutableArray *tires;

}


@property (copyNSString *name;

@property (retainEngine *engine;

实现的如下:

@synthesize name;

@synthesize engine;

还可以设置特性的读写属性。

默认情况下特性时可读写的。readwrite属性。

@property (readwrite ,copy) NSString *name;

也可设置为只读属性

@property (readonly) NSString *licenseNumber;

我们也注意到特性也不是万能的在Car类中。我们就没有tire使用特性。

特性只能替代set和get方法。但是不支持那些需要接受额外参数的方法。


点表达式的妙用。

//        [tire setrainHandling:20+i];

//        [tire setsnowHandling:28+i];

        tire.rainHandling=20+i;

        tire.snowHandling=28+i;

如果点表达式在等号的左边,表示该属性名称的set方法。反之,在等号的右边,表示该属性名称的get方法。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值