2015-11-06 2 views
0

Я хотел бы задать вопрос о «Объекте» и «переменной» в Objective-C. Как мы знаем, мы можем взять много переменных для хранения данных объекта, но сначала мы должны создать объект с распределением. Мы должны предоставить ячейку памяти для нашего объекта в ОЗУ с использованием ключевого слова «alloc». Я думаю, объект не может хранить данные, потому что объект является существительным, как человек. Итак, для хранения данных нам нужно использовать переменную. В C или C++ мы используем переменную любого примитивного типа данных для целей хранения данных. В Objective-C мы используем предопределенные классы, такие как NSString.Какова фактическая разница между «объектом» и «переменной» в Objective-C?

Итак, могу ли я использовать переменную с классом класса NSString, или я буду использовать только объект с объектом типа класса.

Есть две проблемы для меня.

NSString *xyz = [[NSString alloc] init]; // can anyone tell me what should be 'xyz' in here a 'variable' or an 'object'? 

Если «xyz» - это объект здесь. Итак, во-первых, я должен создать его. Но где-то я видел, как ....

NSString *xyz = @"welcome"; // according to me, here we are not allocating memory for 'xyz'. Why? 

В чем разница между обоими утверждениями? Не могли бы вы рассказать мне?

+1

в обоих операциях, которые вы выделяете памяти xyz !!! –

+0

* xyz - это указатель, и вы выполняете [nsstring alloc] init], потому что вы сообщаете компилятору, что xyz теперь является новой строкой !!! LAter вы можете использовать только xyz как nsstring, но не * xyz !!!!!! –

+0

Вы должны прочитать о куче, стеке и распределении памяти в целом. Начиная с C. – FreeNickname

ответ

1

Объекты являются экземплярами классов. (И это все, что есть. Ничего больше не нужно говорить).

Переменные - это глобальные и статические переменные (имеющие неограниченное время жизни) и автоматические переменные (переменные, существующие во время выполнения функции, или при вводе новой области в функции) и исчезающие при завершении области действия или при возврате функции ,

Объекты Objective-C никогда не могут быть переменными. Указатели на объекты могут быть переменными, но объекты не могут. Значения, которые являются частью объекта, часто называются «переменными экземпляра», но это не то же самое, что и переменная.

В других языках, таких как C++, объекты могут быть переменными. Вопрос «в чем разница между объектами и переменными» на самом деле не имеет смысла. Это похоже на вопрос: «В чем разница между алкоголем и коровой». Это разные категории вещей.

@ "MyString" - это ярлык; компилятор создаст для вас объект и даст вам указатель на этот объект.

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