一,@符号标志着“你将使用Objective-C的特殊用法”。@property是一种新的编译器功能,表示声明了一个新对象属性。

二,@property预编译指令的作用是自动声明属性的setter和getter方法。实际上,属性的名称不必与实例变量的名称相同,但大多数情况下它们是一样的。

三,在对对象的属性执行常见的操作时,利用特性可以减少需要编写的代码数量。使用@property预编译指令可以通知编译器:“这个对象具有这种类型的这个名称的这种属性”,使用这一指令还可以传递一些关于特性(例如它的可变性:只读或读写)和对象的内存管理(retain,assign或copy)的信息。此外,编译器还可以为对象的属性的setter和getter自动生成方法声明。

使用@synthesize预编译指令可以通知编译器生成访问器方法。你还可以控制由编译器生成的访问器方法对哪些实例变量起作用。如果不想使用苹果公司提供的默认行为,你也可以自由地编写自己的访问器方法。

尽管点表示法通常出现在特性的上下文中,但是它只是调用对角的setter和getter方法的一种快捷方式。例如,dealie.blah=greeble完全等价于[dealie setBlah:greeble],而shronk=dealie.greeble完全等价于shronk=[dealie greeble],点表示法减少了需要键入的字符数量,而且也进一步方便了曾经使用其它语言的编程人员。

参考资料:《Objective-C基础教程》

05-11 11:17