Объективные свойства цепочки 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 ответ
Удостовериться
тот
isFemale
правильно синтезирован. Осторожно,is
Ключевое слово - этостандартноесоглашение Objective-C (как в@property (nonatomic, getter=isFemale) BOOL female
). Если сомневаетесь, попробуйте другое имя свойства, напримерfemaleGender
,что
Office
СобственостьcurrentEmployee
имеет типEmployee
и что вызывающий класс знает оEmployee
свойства (`#include "Employee.h").