Все просто, преимущество заключается в возможности проверять ключевые значения во время компиляции.Таким образом, вы не сможете передать String
напрямую, а если вы это сделаете, вам придется вручную обернуть его в InfoKey
структуру, чтобы прояснить ваше намерение.
В большинстве случаев выследует использовать одну из предопределенных констант.
enum
было бы лучшим решением, но, вероятно, это нарушило бы некоторый существующий код (и не может быть реально применено в Objective-C).
Если бы инженеры Apple создавали новый API сегодня, они, вероятно, даже не использовали бы словарь, но использовали бы собственный объект для передачи значений в метод делегата.