oc 零散知识 下划线 property synthesize

一. 下划线_

       众所周知现在_属性用来访问属性,而不是调用get方法,可是在以前并不是这样。

       

       所以之前访问属性没有下划线,而且还必须要有与之对应的成员变量。然后就有一个有意思的现象,所以为了能够兼容之前老的xcode,

       有很多框架都是这样写的。

  另外说一下   _属性和成员变量(本身就有下划线),这样做的目的是让其与局部变量区分,声明属性之后,xcode会自己生成一个带下划线成员变量。



二.property synthesize关键字

     还是有历史原因,之前的propery只是对声明的属性做set get方法的声明,并没有实现,这个时候synthesize关键字跟property是配套出现的,synthesize是对相应的属性进行set get方法的实现。然而也不知道从什么时候起,property(...),括号里默认是有readwrite这个关键字的。也就是说property声明属性时,编译器会自动根据readonly readwrite(默认)生成set get方法。synthesize这个作用是废了,但是还有其他作用啊。

@synthesize name; 这样写表示在.m文件访问这个属性时,只能用name,和self.name(个人觉得没用)。

因为在Xcode4.5及以后的版本中,可以省略@synthesize ,编译器会自动帮你加上getter 和 setter 方法的实现,并且默认会去访问

_name这个成员变量,如果找不到_name这个成员变量,会自动生成一个叫做 _name的私有成员变量。

也就是说编辑器很聪明,最后他会帮我们生成一对一配套的成员变量和属性。并且会有相应的set get方法。

@synthesize name = _name;这个还是有一点用,如果你的成员变量和属性名有一个相同的话,如上述(下划线_)情况,那么就可以把成员变量和属性名合并,用_name和self.name访问。

三. IOS 成员变量,全局变量,局部变量定义,static与extern的区别

1,先说定义

  1)成员变量定义:生存与该类的生命周期, 变量存活周期跟你定义的该类实体对象一样;作用域是整个实体对象;可以在h文件中声明或者在m文件中@implementation上面添加的

#import "S1ViewController.h"

@interface S1ViewController ()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值