Объективные свойства цепочки C

Хотя это может быть общий вопрос, я не сталкивался с подобной ситуацией раньше и был немного ошеломлен.
У меня есть несколько классов 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 ответ

Решение

Удостовериться

  1. тот isFemale правильно синтезирован. Осторожно, is Ключевое слово - это стандартное соглашение Objective-C (как в @property (nonatomic, getter=isFemale) BOOL female). Если сомневаетесь, попробуйте другое имя свойства, например femaleGender,

  2. что Office Собственость currentEmployee имеет тип Employee и что вызывающий класс знает о Employee свойства (`#include "Employee.h").

Другие вопросы по тегам