iOS笔记之成员变量及属性变量

1.局部变量:

{NSString *name = “张三”;}

是根据其生存周期定义的,在源文件中的name,其生命周期是在以”{ }”为界限的代码中,也许它的名称有可能和成员变量相同,但并不是同一个变量.

2.成员变量:

              @interfacePeople : NSObject

{

   //私有属性,它只能在当前类中使用

   NSString *  name;

int weight;ht;

}

       成员变量用于类内部,无需与外界接触的变量,成员变量包括实例变量普通类型变量

              成员变量是用于一个区域内的临时变量,是作用于整个类对象内的,从生命周期来看,它比局部变量要长一些,但它默认是私有的,其他对象是无法访问到的.因此,一般自定义方法,作为一个接口让其他对象访问这个变量.因此,成员变量用于类内部,无需与外界接触的变量

3. property属性变量:

@property int  age,height;

              一旦声明了@property属性,它会自动的生成一个_age的全局变量

              一旦声明了@property属性,它会自动生成关于这个属性的set和get方法

属性变量有两大好处:1)只要你为实例变量设置了属性,你就不用再给每个实例变量写设置器和访问器,也就是set方法和get方法

                                   2)有了属性,你就可以使用点方法来访问变量

       属性的声明格式(.h文件中):

语法: @property 类型 名字

比如说:@property(readwrite,nonatomic,tetain)NSString *name;

属性类型有三种:

1)           读写属性(readonly/readwrite):默认为readwrite,表示该属性既可以读取,也可以给该属性变量赋值;readonly则表示只能读取该属性变量.

2)           原子属性(atomicty/nonatomic),默认的时atomicty,表示在多线程中加了锁,而nonatomic表示在多线程中没有加锁,当然可以提高访问效率.

3)           Setter属性(assign/retain/copy):如果属性是对象类型,你需要使用retain,assign,copy参数,表示setter方法内部实现的适合,持有对象 的方式.其中retain就是增加引用计数,强引用类型.assign就是变量的直接赋值,弱引用类型,也是默认值.copy就是把setter的参数赋值一遍,再赋值给成员变量.如果你不给出持有对象的方式,编译器就会给出警告.

属性的实现(.m文件中):

              实现方式:如果在.m文件中写了@synthesizemyButton ,那么生成的实例变量就是myButton,如果没写,那么生成的实例变量就是_myButton。实现完之后你就可以使用点方法来对实例变量访问和设置.

              根据成员变量的私有性,为了方便访问,所以就有了属性变量.属性变量的好处就是允许让其他对象访问到该变量.当然你可以设置只读或者只写等,设置方法也可以自定义,所以,属性变量是用于与其他对象交互的变量.

 

4.成员变量、实例变量、属性变量的联系

@interface MyViewController:UIViewControlle

{

       UIBotton*yourButton;

       intcount;

       iddata;

}

@property (nonatomic,strong) UIButton *myButton;

@end

       在{ }中所声明的变量都是成员变量。所以yourButton、count、data都是成员变量。

       实例变量本质上就是成员变量,只是实例是针对类而言,实例是指类的声明。{ }中yourButton就是实例变量。id是OC特有的类,本质上讲id等同于(void)。所以id data属于实例变量。

       成员变量用于类内部,无需与外界接触的变量。因为成员变量不会生成setget方法,所以外界无法与成员变量接触。根据成员变量的私有性,为了方便访问,所以就有了属性变量。属性变量的好处就是允许让其他对象访问到该变量(因为属性创建过程中自动产生了setget方法)。当然,你可以设置只读或可写等,设置方法也可以自定义。所以,属性变量是用于与其他对象交互的变量。

       综上所述,成员变量是定义在{}中的变量,如果变量的数据类型是一个类,则称这个变量为实例变量。因为实例变量是成员变量的一种特殊情况,所以实例变量也是类内部使用的,无需与外部接触的变量,这个也就是所谓的类私有变量。而属性变量是用于与其他对象交互的变量。

       如今,人们都喜欢用属性变量来定义类的变量,把需要与外部接触的变量定义在.h文件中,只在本类中使用的变量定义在.m文件中

 


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值