Почему некоторые ивары имеют префикс двойного подчеркивания?
Когда XCode создает операторы синтеза в шаблонах Apple, вы увидите что-то вроде:
@synthesize ivar=_ivar;
Итак, я получил единственное подчеркивание, и то, как вы называете ивары не так, как свойства, чтобы убедиться, что вы случайно не получили к ним доступ и т. Д...
Я только что запустил основной проект данных, и в созданных шаблонах я имею:
@synthesize managedObjectContext=__managedObjectContext;
@synthesize managedObjectModel=__managedObjectModel;
@synthesize persistentStoreCoordinator=__persistentStoreCoordinator;
Почему двойное подчеркивание для основных имен данных, связанных с ivar? Это просто синтаксис Apple? Не уверен, что есть что-то большее, чем это, и если это то, что мне нужно знать - Google не очень помог.
Спасибо!
2 ответа
Компилятор Objective C обрабатывает все имена переменных одинаково, поэтому двойное подчеркивание - это просто соглашение. Однако двойное (или одиночное) подчеркивание, за которым следует заглавная буква, зарезервировано для использования компилятором.
Кроме того, проверьте ответы на этот вопрос, они более углублены, чем я могу объяснить.
Предполагается, что ведущие двойные подчеркивания должны быть зарезервированы исключительно для библиотек компилятора и языка. Однако Apple решила также использовать их для Core Data. Мы, простые смертные разработчики, не должны использовать двойное подчеркивание.