Я согласен с Чаком и комментаторами. Ваш метод зависит от слишком многих других объектов, но установка hasPickedName:
на pickerViewController
означает, что pickerViewController
все равно придется каким-то образом [picker.bvc.currentResolve.name isEqualToString:message]
.
Вместо этого вы можете поместить hasPickedName:
в bvc
и внедрить bvc
в качестве делегата (возможно, набрал id<NamePickerDelegate>
) в ваш объект верхнего уровня с помощью Interface Builder. Чтобы быть действительно Demeter-совместимым, заставьте currentResolve
вырастить метод nameMatches:
, который сокращает [currentResolve.name isEqualToString:message]
.
Вы должны внимательно посмотреть на сложность, вызванную проблемой, на сложность, которая будет представлена каждым решением. Если вы считаете, что исходный код проще и проще в обслуживании, чем альтернативы, сохраните его.