1.什么是setter方法, 什么是getter方法
setterf方法:为单一实例变量赋值的方法称为setter方法(设置器);
getter方法:读取实例变量值的方法称为getter方法(访问器);
2.setter和getter方法的书写格式
setter方法的书写格式如下:
-(void)setAge:(NSInteger)age;
注意:set + 实例变量名(首字母大写);
getter方法的书写格式如下:
-(NSInteger)age;
注意:返回值类型与变量类型一致,方法与实例变量名相同;
3.什么是属性:属性是Objective - C 2.0定义的语法,提供setter 、getter方法的默认实现。在一定程度上简化程序代码,并且提高程序的安全性。
4.属性是如何定义的
(1).属性的声明:在.h文件中使用@property声明属性;
如:@property NSString *name;
相当于在@interface中声明了两个方法:
setter方法:- (void)setName:(NSString *)name;
getter方法 :- (NSString *)name;
5.属性如何实现
(1)属性的实现:在.m文件使用@synthesizer实现属性
如:@synthesize name = _name;
相当于在@implementation实现了
setter方法:- ( void) setName:(NSString *)name { _name = name;
}
getter方法:- (NSString *)name {
return _name;
}
注:@synthesize在类的实现部分。
·在Xcode4.5以及之后的版本中,@synthesize可以省略,只使用@property声明属性即可。 在默认情况下,当没有实现 setter和getter 方法时,通过 @synthesize可以自动生成标准的
setter和getter方法。
6.属性的作用:作用是生成setter以及getter方法的实现,如果方法内部操作的实例变量未定义,系统会自动生成一个属性名的实例变量,但是生成的实例变量的可见度是私有的,子类不可访问。
7.属性的特性都有哪些,每个特性的分类又有哪些,关键字是什么,作用是什么?
(1)读写性控制(readonly、readwrite、setter=、getter=);
readonly:只读状态,是告诉编译器,属性只生成getter方法,不生成setter方法
readwrite:读写状态,是告诉编译器,属性即生成setter方法又生成getter方法,既有设置器,也有访问器,默认的读写特性。
setter=:指定属性生成的setter方法的名字。
getter=:指定属性生成的getter方法的名字。
(2).原子性控制(nonatomic、atomic);
atomic:原子特性,setter、getter方法在多线程访问下是绝对安全的,即setter、getter内部做了多线程访问处理。默认的原子特性;
nonatomic:非原子特性。setter、getter方法内部不会做多线程访问处理,仅仅是普通的setter、getter方法。
(3).语义特性:(语义设置 assign、retain、copy)
如果属性是非对象类型(如:int、float等)属性的语义设置使用assgin.
如果属性是对象类型(如:NSString等)属性的语义设置使用retain.
如果属性是对象类型并且想得到对象的副本,使用copy.(对于retain和copy的区别以及copy的使用场景,在之后讲到内存管理会详细讲解)
应用实例如:@property (nonatomic, assign) NSInteger age;
8.@property,@synthesize分别有什么作用。
在Xcode4.5以及之后的版本中,@synthesize可以省略,只使用@property声明属性即可。在默认情况下,当没有实现 setter和getter 方法时,通过 @synthesize可以自动生成标准的setter和getter方法。
9.点语法的定义:点语法是Objective - C 2.0中定义的语法格式。提供了一种便捷的属性访问方式。
10.要区别在不同情况下使用的点语法是setter方法还是getter方法
(1)只要符合系统默认setter、getter书写格式的方法都可以使用点语法。
(2).属性是一对setter、getter方法,点语法是属性的另一种调用格式。