Почему некоторые ивары имеют префикс двойного подчеркивания?

Когда XCode создает операторы синтеза в шаблонах Apple, вы увидите что-то вроде:

@synthesize ivar=_ivar;

Итак, я получил единственное подчеркивание, и то, как вы называете ивары не так, как свойства, чтобы убедиться, что вы случайно не получили к ним доступ и т. Д...

Я только что запустил основной проект данных, и в созданных шаблонах я имею:

@synthesize managedObjectContext=__managedObjectContext;

@synthesize managedObjectModel=__managedObjectModel;

@synthesize persistentStoreCoordinator=__persistentStoreCoordinator;

Почему двойное подчеркивание для основных имен данных, связанных с ivar? Это просто синтаксис Apple? Не уверен, что есть что-то большее, чем это, и если это то, что мне нужно знать - Google не очень помог.

Спасибо!

2 ответа

Решение

Компилятор Objective C обрабатывает все имена переменных одинаково, поэтому двойное подчеркивание - это просто соглашение. Однако двойное (или одиночное) подчеркивание, за которым следует заглавная буква, зарезервировано для использования компилятором.

Кроме того, проверьте ответы на этот вопрос, они более углублены, чем я могу объяснить.

Предполагается, что ведущие двойные подчеркивания должны быть зарезервированы исключительно для библиотек компилятора и языка. Однако Apple решила также использовать их для Core Data. Мы, простые смертные разработчики, не должны использовать двойное подчеркивание.

Другие вопросы по тегам