Objective-C,引用的属性

Sam*_*Sam 3 iphone gcc objective-c

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

@property (nonatomic) CGRect  &finalFrame;
Run Code Online (Sandbox Code Playgroud)

和coressponding合成器

@synthesize finalFrame;
Run Code Online (Sandbox Code Playgroud)

对于声明为的变量

CGRect finalFrame;
Run Code Online (Sandbox Code Playgroud)

给出错误

  • "finalFrame"属性的类型与ivar"finalFrame"的类型不匹配
  • 不可识别的insn:
  • 内部编译器错误:总线错误
  • 内部编译器错误:在extract_insn中,在recog.c:2904

但是,我可以手动执行它,没有问题,使用以下方法:

- (CGRect&)finalFrame;
- (void)setFinalFrame:(CGRect&)aFrame;
Run Code Online (Sandbox Code Playgroud)

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

Kri*_*son 5

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

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