美文网首页
OC基础 ---- > 属性和点语法

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

作者: b8028f13eaa2 | 来源:发表于2016-05-19 10:37 被阅读45次

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基础 ---- > 属性和点语法

    A ---- > setter . getter 定义 1、在OC中,为单一实例变量赋值的方法称为setter 方...

  • .点语法和_下划线

    点语法 点语法是对属性的访问,经过oc消息派发,可以完成属性所定义的“内存管理语义”, 包含set和get...

  • OC属性, 点语法

    1. 属性 属性是 objective-c2.0 定义的语法, 为实例变量提供了setter和getter方法的默...

  • OC中的属性Property和点语法

    OC中的属性Property和点语法 属性是什么 我们都知道,属性是变量和它对应的setter和getter方法的...

  • 杂记

    OC语法问题 OC语法细节:不允许直接修改OC对象的结构体属性的成员 比如:self.scrollView.con...

  • OC中“属性”的概念

    属性“属性”是OC语法的特性,用于封装对象中的数据,每个不同的属性使用存取方法来调用,同样也可以使用点语法来更方便...

  • Swift/OC懒加载(lazy)

    oc懒加载 oc懒加载机制充分使用了oc点语法的特性。举个例子 上面这个例子定义了view属性,当MyView被创...

  • iOS-面试题-OC基础篇 (3) - (1)

    前言:面试笔试都是必考语法知识点。请认真复习和深入研究OC。 目录:iOS-面试题-OC基础篇 (1) - (84...

  • iOS-面试题-OC基础篇 (2) - (83)

    前言:面试笔试都是必考语法知识点。请认真复习和深入研究OC。 目录:iOS-面试题-OC基础篇 (1) - (84...

  • 无标题文章

    OC基础语法 //整型 NSIntegera =10; //NSLog是OC里面的打印函数 NSLog(@"a =...

网友评论

      本文标题:OC基础 ---- > 属性和点语法

      本文链接:https://www.haomeiwen.com/subject/zzzwrttx.html