2014-11-21 3 views
1

Я создаю понимание сферы в объектно-ориентированном программировании, в частности Objective-C. Я понимаю, что статические переменные - это переменные, которые не потеряют свою ценность во время использования в нескольких методах в классе, в котором они определены *. Соблюдаете ли свойства так же? Я знаю, что свойства возвращаются к их первоначальному значению для каждого экземпляра класса внутри его подклассов. Но, они сохраняют значение (предварительно заданное или модифицированное различными способами) на всем протяжении всего класса, правильно?Являются ли объекты Objective-C «Static»?

* Статические переменные сохраняют свою ценность во всем использовании в рамках нескольких методов в классе, в котором они определены, или сохраняют свои значения во всех экземплярах класса, в котором они определены во всех различных подклассах? Если да, то я мог видеть, почему свойства не считаются статическими. Но если нет, то свойства можно считать статичными, правильными?

Также являются статическими переменными, отличными от глобальных переменных?

ответ

1

Свойства экземпляра Objective-C по умолчанию поддерживаются переменными экземпляра, поэтому они не ведут себя как статические переменные. Вы можете установить свойство в экземпляре, и значение останется прежним до тех пор, пока вы не установите его на что-то другое.

Однако свойства являются просто специальным синтаксисом поверх вызовов методов. Нет никакого ограничения на то, что вы можете сделать внутри метода, поэтому теоретически вы можете «вернуть» свойство экземпляра статической переменной, и компилятор возьмет его в порядке. Однако подобная схема не была бы удобочитаемой, поэтому я бы настоятельно рекомендовал ее использовать.

Смежные вопросы