课程:核心语法
关键字:@property,@synthesize
这两个关键字可以简化对成员变量的set和get方法的代码编写过程。类似于OC中的点语法。
对于成员变量的set和get方法的编写代码重复量很高,没有实际意义,代码类似,除了放回类型以及参数类型不同之外,其他都十分相似。
使用关键字@property可以让xcode编译器自动生成成员变量的set和get方法的声明。只是方法的声明,而不是实现。
格式:@property 成员变量类型 成员变量名(去掉变量名开头的下划线,如果保留下划线,则编译成自动生成的方法名也会包含下划线,实际中如果手动写set和get方法是不会加上下划线的)。编译器可以自动改首字母大小写,但是不会自动去除下划线。在指针*号和变量名之间可以有空格,编译器会忽略它们之间的空格。
xcode编译器在自动生成成员变量set和get上比较智能,使用@property 类型 成员变量名后,编译器会根据这条语句中的成员变量名(后面用变量名1来指代)来
生成实际的set和get方法声明,如果变量名1加上“_”(编译器自动加)符合在大括号中声明过的相应的变量名,那么实际生成的就是对应正确的set和get方法,如果在大括号声明中没有找到这样一个符合的变量名,那么编译器一样会自动生成set和get方法,只不过对应的是”_变量名1"这个成员变量(在大括号声明中找不到),即编译器会自动声明这么一个成员变量:“_变量名1”。这个成员变量也会被加入到对象内存中,只不过不符合最初的编程思想,因此,在使用@property语句时要注意对变量名的书写。
自动生成set和get方法的实现:
关键字@synthesize。要使用synthesize关键字一定要先写property关键字定义好方法声明。格式如下:
成员变量声明: 类型名 _成员变量名1(以下划线开头);
@propety 类型名 成员变量名1(去掉下划线) ;
@synthesize 成员变量名1 (去掉下划线);
即成员变量名要对应。