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

来源:互联网 发布:网络歌曲欣赏 编辑:程序博客网 时间:2024/06/05 19:54

前面我们在编写的时候用到了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方法。



原创粉丝点击