OC 中的属性

自动合成 (autosynthesis)

@property 语法,会做下面两件事情

  1. 自动生成存取方法
    由编译器生成,编辑器里不会看到这些方法。
  2. 向类中添加适当类型的实例变量
    在属性前加下划线,作为实例变量的名字。也可以通过@synthesize 语法指定实例变量的名字。

    @synthesize firstName = _myFirstName  
    

如何阻止自动合成

  1. 自己实现存取方法
  2. 实现其中一个方法,另一个方法由编译器来合成
  3. 使用 @dynamic 关键字

@dynamic 的作用

告知编译器:

  1. 不要自动创建实现属性所用的实例变量
  2. 不要为其创建存取方法
  3. 访问属性的代码时,即使编译器没有找到定义的存取方法,也不要报错
  4. 相信这些方法在运行期可以找到

posted on 2017-12-25 22:22  花老🐯  阅读(336)  评论(0编辑  收藏  举报

导航