Objective-C,引用的属性

时间:2010-03-04 16:55:33

标签: iphone objective-c gcc

这可能是iPhone特有的,我不确定。在为模拟器构建时,编译器不会抱怨,但在编译设备时,当我尝试设置对象引用的属性时,它会抛出一些时髦的错误。例如,

@property (nonatomic) CGRect  &finalFrame;

和coressponding合成器

@synthesize finalFrame;

表示声明为

的变量
CGRect finalFrame;

给出错误

  • 属性'finalFrame'类型与ivar'finalFrame'
  • 的类型不匹配
  • 无法辨认的insn:
  • 内部编译器错误:总线错误
  • 内部编译器错误:在extract_insn中,在recog.c:2904

但是我可以使用以下方法手动完成:

- (CGRect&)finalFrame;
- (void)setFinalFrame:(CGRect&)aFrame;

这是一个gcc bug吗?它确实为模拟器编译。

1 个答案:

答案 0 :(得分:5)

您的属性被声明为引用类型(CGRect&),但您的实例变量不是引用类型(CGRect)。它们必须相同才能使用@synthesize

另外,使用C ++引用类型作为Objective-C属性有点奇怪,但我想只要将所有文件编译为Objective-C ++就可以工作。