关于实例变量和属性——之二

使用instancetype指定返回类型,
明确它和id之间的区别,
isntancetype 指定的是和init初始化的对象(self)相同类型的对象,
而id指定的是任意类型的对象.

关于实例变量和属性——之二

  不管在实现文件中显式声明的实例变量,或者是使用@synthesize隐式生成的实例变量,它们都是私有的。子类中无法通过实例变量名称直接访问实例变量,只能通过从父类继承的accessor访问。

  @synthesize方法可能会进行额外的工作,比如内存管理,复制值等,而这些工作在直接对实例变量进行读写操作时不会发生。

  故在属性和实例变量之间还有一个抽象层,这一层让系统有机会来做一些额外工作(只有当需要访问实例变量的时候才进行的,可以理解为:对实例变量指向的空间进行分配并初始化等工作,所以不需要对这一层深究)。

  简单来说,不需要人为指定@synthesize指令,编译器会为用户声明的属性自动生成实例变量以及访问方法(accessor),自动生成的访问方法命名规则如下:

  • getter方法:和属性名相同。
  • setter方法:属性名前加set,如firstName,则生成setFirstName。
  • 实例变量(instance Variable):属性名前加下划线,如_firstName。

      实例变量直接可以在实现文件中访问,也可以通过属性名访问:

_firstName = @"王二狗";
self.firstName = @"王二狗";
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值