Для объявления структур стиль объявления typedef struct _name {...} name
восходит к дням GCC 2.0 или около того, когда, как упоминалось выше, вы не могли иметь анонимную структуру.
Для имен иваров единственным главным подчеркиванием является внутреннее соглашение о кодировании Apple, и официально говорящий Apple сохраняет все имена, начинающиеся с одиночных символов подчеркивания. Если Apple назовет все свои ивары таким образом, вы не столкнетесь ни с одним из их имен, если вы этого не сделаете.
К сожалению, многие примеры проектов кода были опубликованы на веб-сайте разработчика Apple, не пропуская кода и удаляя ведущие подчеркивания имен ivar. Это происходит по двум причинам, главным из которых является то, что разработчики, работающие внутри Apple, имеют привычку называть их переменные таким образом, а другая причина заключается в том, что люди, просматривающие примеры проектов кода, действительно не очень заботились о принудительном стандартном кодировании стиль.
За исключением того, что эта форма в вопросе не непрозрачна. Непрозрачность обычно достигается с помощью указателей void void typedef'd и сохранения фактического определения структуры из публичных заголовков. – Benno
Возможно, вы правы, почему-то я предположил, что он комбинировал код из публичного/частного, так как он говорил о частных API. – phoebus