Кажется, что существует некоторая путаница в различии между экземпляром и классом. Как правило, лучше попытаться связать сложные идеи, подобные этим, с реальными примерами.
A Класс мог бы, например, быть Автомобили. Таким образом, у вас есть класс автомобилей. Он будет включать информацию, общую для всех автомобилей. Например, вместо того, чтобы иметь свойствоName, оно может иметь «модельное» имя. Чтобы получить доступ к данным о любом автомобиле, вы должны сначала создать его. Это то, что вы делаете в первой строке: CustomClass *variableName = [[CustomClass alloc] init];
В нашем примере мы напишем Car *myCar = [[Car alloc] init];
, который создает новый объект Car, который мы называем myCar
. Затем вы можете сказать myCar.model = "Civic"
. Мы не хотим, чтобы все автомобили были «гражданскими», а конкретно myCar
, которые мы создали. Не путайте между классом, который описывает общий вид объекта, и экземпляр, который является самим объектом.
Надеюсь, теперь вы понимаете последнюю часть вашего вопроса:
* имяПеременной - что это?
Это означает, что у вас есть ссылка на экземпляр вашего CustomClass
, который называется variableName
. В нашем примере это myCar
, который затем можно манипулировать или изменять.
'Автомобиль * myCar = [[Car alloc] init];' - создает новый объект Car с именем myCar. Но если это так: 'Car myCar = [[DifferentCar alloc] init];' В чем разница? Я знаю, что '[[XX alloc] init];' предназначен для создания нового объекта, но что там делает XX? – Edgar
@ Edgar другие также могут быть смущены этим. Идите вперед и задайте это по отдельному вопросу. –