在Objective-C继承中使用@ synthesize/@属性

Coo*_*coa 12 oop inheritance cocoa cocoa-touch objective-c

如果A类的实例var"foo"具有@ property/@ synthesize指令,而B类继承自A类,它是否还需要@ property/@ synthesize"foo"?我问的原因是因为当我尝试使用B类的"foo"时,调用类说"foo"不是结构化联合或成员的东西,这让我相信它需要明确合成.

Geo*_*lly 10

不,你没有.合成属性会自动添加到A类及其子类中.

  • 谢谢.这一直在压制我的良心!:) (4认同)

Pet*_*sey 10

如果A类的实例var"foo"具有@ property/@ synthesize指令,而B类继承自A类,它是否还需要@ property/@ synthesize"foo"?

没有.

我问的原因是因为当我尝试使用B级的"foo"时,调用类说...

不,编译器说的.

......"foo"不是结构化联盟或成员,这让我相信它需要明确合成.

它是.在A班

编译器给你这个警告,因为它不知道@property,这是因为你既没有声明它也没有导入声明它的头.你说类A的头部声明了属性,所以将类A的头部导入到B类的实现中,以便编译器在编译B类时知道该属性.