OC基础 ---- > 属性和点语法

A ---- > setter . getter 定义

1、在OC中,为单一实例变量赋值的方法称为setter 方法(设置器)

2、在OC中,读取实例变量的方法称为 getter 方法(访问器)

B ---- > setter /getter 的书写格式

1、-(void)setAge :(NSUInteger)age;

set + 实例变量名 (首字母大写)忽略下划线

2、-(NSUInteger)age;

返回值类型与实力变量类型一致,方法与实例变量名相同,忽略下划线

C---- > 属性的定义---> 作用

1、OC 2.0的语法, 提供了setter 和getter 方法的默认实现

可以简化程序代码,提高程序的安全性

D  ----> 关键字 + 实例

.h 文件 : @property NSString *name 相当于声明了实例变量的 setter 和getter 方法

.m 文件 : @synthesize     name = _name; 

1)、@synthesize name 为实现声明的属性

2)、_指定生成的setter 和 getter  方法的内部操作的实例变量

Xcode 4.5之后 @synthesize 可以省略。 当没有实现getter 和 setter 方法的时候 通过 @synthesize 可以自动生成标准的 setter 和 getter 方法


E ---- > 属性和实例变量

1、如果方法内部操作的实例变量未定义,系统会自动生成一个_属性名的实例变量,但是生成的实例变量可见度私有。子类不可访问

2、一旦同时重写了setter 和 getter 方法, 并且没有实现 @synthesize ,@synthesize 就  不再  生成实例变量

F ---- > 属性的特性

1、为属性提供的一些关键字来控制setter getter 方法的实现细节 ,这些关键字称为属性的特性

G------>、读写控制 (readonly \readwrite\setter = \getter = ) 1)、readonly -->只生成 getter 方法,不生成 setter 方法

2)、readwrite -->告诉编译器生成 setter 和 getter 方法,默认的读写特性

3)、setter = 指定属性生成的setter 方法的名字

getter = 指定生成getter 方法的名字

H----- >、原子性控制 (nonatomic atomic)

1)\atomic --- > 原子特性,setter getter 方法在多线程访问下是绝对安全的,即 setter 和 getter 内部做了多线程访问处理。 默认的原子特性

2)nonatomic --- > 非原子特性 setter 个getter 内部不会做多线程访问处理

3)使用 atomic 对setter 和getter 不断的加锁 解锁 保证线程访问的安全,但是会 占用系统资源,降低系统性能 。所以只有在需要线程安全的时候才会定义为 atomic

I ------ > 属性的特性  -- - ->语义特性

1、语义设置 (assign/retain/copy)

2、如果属性是非对象类型,属性的语义设置使用assign;

如果属性是对象类型,属性的语义设置为retain;若果属性是对象类型并且想得到对象的副本,使用copy

3、语义设置 assign 内部实现

- (void) setAge : ( NSInteger ) age {

     _age = age ;

}

- ( NSInteger ) age{

    return _age;

}

4、语义设置关键字为 retain  --- >内部实现

- ( void )setName: ( NSString *)name{

    if   ( _name != name ){

          [ _name release];   

        _name = [ name retain ];

   }

}

- ( NSString * ) name{

return [[ _name retain ] autorelease ];

}


5、语义设置的关键字是 copy 

- (void)setGender : (NSString *)gender { 

    if ( _gender != gender ){

       [ _gender release ];

          _gender = [gender copy]

   }

}

6、J ---- > 点语法

1、定义 --- > 在OC 2.0 中定义的语法格式 ,提供了便捷的属性访问方式

2、使用 : 符合系统默认的setter getter 书写格式的方法都可以使用点语法

3、属性是一对 getter 和 setter 方法, 点语法是属性的另一种调用格式

你可能感兴趣的:(OC基础 ---- > 属性和点语法)