iOS:不明确的属性综合行为。 inheritance关系

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

子类定义并合成一个名为delegate的属性。 其实财产声明已经被注释掉了! 但@synthesize delegate = delegate_; 声明被抛在后面。

代码编译,大概是因为基类定义和综合了一个也称为委托的属性,并与具有相同名称的支持variables合成: @synthesize delegate = delegate_;

我的问题是:一个消息发生什么事发送给委托

a)基类方法和

b)在分类方法中。

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

属性“委托”的访问者已经与实例variables“delegate_”合成

@synthesize指令是根据同名属性的规范(primefaces性,内存pipe理)创build存取方法和ivar的简写。 鉴于此,在子类中重新合成一个属性(不重新声明它)就像覆盖访问器方法一样 – 使用子类的实现而不是超类。 由于在这两种情况下编译器都创build了这些实现,所以在行为上没有明显的区别。

其中一个区别是,合成的伊娃与@私人伊娃拥有相同的可视性,因此子类无法访问它,包括将其用作属性的后备variables。 这意味着子类中的重新合成必须使用不同的伊娃名称。 如果超类具有@synthesize wildHorses = wildHorses_; ,那么编译器要求子类做类似@synthesize wildHorses = equusFerus; *。


*如果超类使用创build的伊娃的默认名称, @synthesize wildHorses; 那么子类仍然必须合成一个新的variables: @synthesize wildHorses = wildHorses_;