属性与点语法

1.   setter 方法的作用:为单一实例变量赋值
       setter 方法的规范写法: - 号 方法,无返回值, 名字以set开头 + 要设置的变量的实例变量名(首字母大写) : (setter方法有且只有一个参数) +参数的类型(和实例变量的类型相同) + 参数名(和实例变量名相同)
       getter 方法的作用:获取单一实例变量的值
      getter方法的命名规范: - 号方法, 有返回值(返回值类型和实例变量的类型相同)   方法名直接和实例变量名相同,无参数.
 
2.属性是OC2.0之后出来的新的语法,用来替代setter以及getter方法,使用属性可以快速创建setter以及getter方法的声明,setter以及getter方法的实现,另外还添加了对实例变量操作的安全处理.
    详解:@property  用来定义属性,NSString * 属性的类型(和实例变量类型相同) name属性名(和实例变量名相同)
    切记:@property 只是自动声明setter以及getter方法的声明

3. @synthesize name = _name ,gender =_gender ,age = _age ,height = _height ,weight = _weight;
  详解: @synthesize  属性的实现部分,实现属性自动生成的setter以及getter方法
     name 属性名, 指定要实现哪一个属性生成的setter以及getter方法
    _name  ,setter以及getter方法内部所要操作的实例变量

4.(1).如果定义的实例变量没有定义,系统会自动生成指定的实例变量,但是生成的实例变量是私有的,子类不能直接访问
 (2).如果实例变量想让子类访问,那在.h文件中必须定义实例变量
 如果未指定setter以及getter内部所要访问的实例变量时,系统会自   动生成一个和属性名一样的实例变量
(3).如果在.m文件中,没有通过@synthsize对属性进行合成,系统会自动合成,只不过此时内部所操作的实例变量是  _属性名

5.属性的特性(attribute)
   第一大特性:读写特性
         (1).readonly:告诉编译器,属性在自动生成方法时,只会生成getter方法,不会生成setter方法
         (2).readwrite:告诉编译器,属性在自动生成方法时,既要生成setter方法,也要生成getter方法.系统默认的读写特性
         (3).setter = aa:  告诉编译器,当自动生成setter方法时,setter方法的方法名为指定的名字aa,不采用默认的
         (4).getter = aa:  告诉编译器,当自动生成getter方法时,getter方法的方法名为指定的名字aa,不采用默认的
例如:   @property (readonly,retain)  NSString *name;
           @property  (readwrite,setter = aa:,retain)  NSString *gender;
    第二大特性:原子性特性
         (1).atomic:原子特性,保证线程的安全,内部做了安全处理(加锁与解锁),系统默认的原子特性
         (2).nonatomic:非原子性,不保证线程安全
         因为对于setter语句getter方法的使用,比较频繁,在一段时间内可能要多次访问,所以使用atomic会非常消耗系统的资源,降低程序的执行效率,使用nonatomic,虽然不保证线程安全,但是使用一般情况下都是安全的,所以对于原子特性,使用nonatomic
    第三大特性:语义特性
         (1).assign:  直接赋值 ,使用针对于基本数据类型,也可以针对于对象类型.系统默认的语义特性
         (2).copy : 针对于对象类型,并且要服从NSCopying协议的对象才可以.会复制出一个新的对象,拥有新的对象的所有权(引用计数+1).(先暂时这么理解)
         (3).retain : 针对于对象类型,会造成对象的引用计数+1.

例如:@property  (nonatomic,retain)  NSString *gender;
        @property (nonatomic)NSInteger age;

6.点语法: 是一种快速访问setter以及getter方法的方式,声明属性默认生成的对应的setter以及getter方法,所以属性和setter和getter方法都有关联
        对象.属性名  -----如果 在等号的左边,意味着调用setter方法,除此情况,都是调用getter方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值