MassIndex
?
{
?
/// ?;
}
//如果调用不存在的setter和getter方法会报错。
复制代码
属性的缺点
?
属性不是万能的,如果方法并不适合属性所胡涵盖的较小范围的话。属性只支持替代 -setBlah和-blah方法,但是不支持那些需要接收额外参数的方法。例如:car对象中tire对象的代码。
?
-(void)setTire:(Tire *)tire atIndex:(int)index;
?
-(Tire *)tireAtIndex:(int)index;
属性的总结
?
本文主要介绍了属性。在为对象变量执行常见的操作时,利用属性可以减少需要编写以及随后需要阅读的代码数量。使用@propert预编译指令可以告诉编译器:“嘿,这个对象具有这些类型的特性” 你还可以让属性传递其他信息,比如可变性(只读或者读写)。编译器在后台会自动生成对象变量的setter和getter方法。
?
使用@sythesize预编译指令可以通知编译器生成访问的方法。你还可以控制由编译器生成的访问方法对哪些实例变量起作用。如果不想使用默认的行为,你完全可以编写自己的访问方法。你还可以使用@dynamic指令告诉编译器不要生成变量和代码。
?
尽管点表达式通常出现在有属性的代码中,但是它只是调用对象的setter和getter方法的一种便捷方式。点表达式法减少了需要键入的字符数量,而且进一步方便了曾经使用其他语言的
编程人员。
?