iOS面试题:在有了自动合成属性实例变量之后,@synthesize 还有哪些使用场景?

总结下 @synthesize 合成实例变量的规则,有以下几点:

  • 如果指定了成员变量的名称,会生成一个指定的名称的成员变量 @synthesize foo = _foo;。如果这个成员已经存在了就不再生成了。
  • 如果是 @synthesize foo; 会生成一个名称为 foo 的成员变量,也就是说:如果没有指定成员变量的名称会自动生成一个属性同名的成员变量,
  • 假如 property 名为 foo,同时还存在一个名为 _foo 的实例变量,则不会自动合成新变量。

回答这个问题前,我们要搞清楚一个问题:什么情况下不会 autosynthesis(自动合成)?

  • 同时重写了 setter 和 getter 时
  • 重写了只读属性的 getter 时
  • 使用了 @dynamic 时
  • 在 @protocol 中定义的所有属性
  • 在 category 中定义的所有属性
  • 重载的属性

更多:iOS面试题合集

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容