В чем разница между переменной / методом экземпляра и переменной / методом класса в Objective-C? - PullRequest
1 голос
/ 07 августа 2010

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

Мне нужно простое английское объяснение. «Говорить на кодере» слишком сложно для меня, чтобы понять на данном этапе моего обучения.

Ответы [ 4 ]

2 голосов
/ 07 августа 2010

Во-первых, Objective-C не имеет переменных класса.Есть вещи, которые действуют как переменные класса модально, но они не являются истинными переменными класса (см. «Статические переменные»).

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

2 голосов
/ 07 августа 2010

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

Рассмотрим типичный Dog класс, который происходит от класса Mammal (и так далее на древе жизни). У конкретной собаки есть name, collar и owner - это его свойства. Определенная собака может -bark или -chaseBall или -buryBoneInBackyard - таковы ее методы.

Класс Dog, с другой стороны, имеет разные методы. Класс Dog имеет +globalPopulation и может создавать себя с помощью фабричного метода +dogWithDNA:. Класс Dog будет иметь метод +isExtinct, указывающий, вымер ли вид в целом (это, конечно, не так).

Вкратце: методы класса влияют на весь класс, в то время как методы экземпляра влияют на конкретный экземпляр класса.

0 голосов
/ 07 августа 2010

Класс - это форма для чего-то, что вы можете заполнить штукатуркой.

Таким образом, метод уровня класса - это то, что вы можете увидеть, достичь и использовать, даже не создавая ни одного объекта.

Пример подобен заливке гипса в форму и извлечению чего-либо.Вы выбиваете столько, сколько вам нужно;В этом случае переменная экземпляра - это место в этом объекте для хранения чего-либо, а метод экземпляра - это то, что вы можете делать только с этим единственным объектом, а не со всеми.

0 голосов
/ 07 августа 2010

Переменные экземпляра (ivars) и методы экземпляров существуют в каждом экземпляре.Существует один ивар на экземпляр.Методы экземпляра не могут быть вызваны для классов.

Переменные класса ^ и методы класса не существуют в экземплярах, они существуют в классе.Это означает, что всегда будет только одна переменная класса во всем приложении, независимо от того, сколько экземпляров создано .Методы класса могут быть вызваны без экземпляра *, поэтому они действуют как обычные функции Си.Поскольку методы класса не привязаны к экземпляру, методы класса не могут получить доступ к ivars .

^ Objective-C не имеет переменных класса как таковых.«Переменные класса» фактически являются статическими глобальными переменными в C.

*, технически класс является экземпляром, поэтому методы класса на самом деле являются методами экземпляра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...