Objective C链接属性

时间:2013-06-28 09:11:24

标签: objective-c llvm-gcc

虽然这可能是一个完整的n00b问题,但我之前并没有遇到过这样的情况,并且有点惊呆了。
我有一些Objective C类,每个类都声明了一些属性。所有属性都已正确声明和合成。

简化后,结构如下所示:

CompanyData - hasA - DepartmentInfo - hasA - Office - hasA - Employee - hasA - isFemale(BOOL)

如果我写这样的话:

companyData.departmentInfo.office.currentEmployee.isFemale = YES;

我的代码无法编译,我收到"Segmentation fault: 11"错误。

但是,如果我写:

Employee *currentEmployee = companyData.departmentInfo.office.currentEmployee;
currentEmployee.isFemale = YES;

一切都很好。为什么?我在这里缺少什么?

我正在使用XCode 4.5和LLVM GCC 4.2编译器。

1 个答案:

答案 0 :(得分:1)

确保

  1. isFemale已正确合成。请注意,is关键字是一个Objective-C 标准约定(如@property (nonatomic, getter=isFemale) BOOL female中所述)。如有疑问,请尝试其他属性名称,例如femaleGender

  2. Office属性currentEmployee的类型为Employee,并且调用类知道Employee属性(`#include“Employee.h “)。