首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS:模糊的属性综合行为。继承相关

iOS:模糊的属性综合行为。继承相关
EN

Stack Overflow用户
提问于 2012-05-21 16:52:37
回答 1查看 546关注 0票数 3

我正在使用AppCode,它在一个非常大的项目的代码中标记了一个有趣的情况。前弧。

子类定义和合成一个名为委托的属性。实际上,财产声明已经被删除了!但@synthesize delegate = delegate_;的声明被抛在脑后。

代码编译,大概是因为基类定义和合成了一个属性(也称为委托),并使用同名的支持变量( @synthesize delegate = delegate_; )对其进行综合。

我的问题是:将消息发送给

a)基类方法和

( b)在子类方法中。

AppCode将子类中的合成语句标记为错误:

属性‘委托’的

访问器已经用实例变量'delegate_'

合成了

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-21 18:36:17

@synthesize指令是根据同名属性的规范(原子性、内存管理)创建访问器方法和ivar的缩写。考虑到在子类中重新合成属性(而不重新声明属性)的工作原理就像重写访问器方法--使用子类的实现而不是超类的实现。因为在这两种情况下,实现都是由编译器创建的,所以行为没有明显的区别。

一个不同之处是,合成的ivar具有与@private ivar相同的可见性,因此子类无法访问它,包括将其用作属性的支持变量。这意味着子类中的重新合成必须使用不同的ivar名称。如果超类具有@synthesize wildHorses = wildHorses_;,则编译器要求子类执行类似于@synthesize wildHorses = equusFerus;.*的操作。

*如果超类使用所创建的ivar的默认名称,则@synthesize wildHorses;子类仍然必须合成一个新变量:@synthesize wildHorses = wildHorses_;

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10689313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档