Когда писать "NSString * str" или "NSString str"? - PullRequest
1 голос
/ 27 августа 2011

Я изучаю Objective C для программирования на iOS.Я знаю, что это как-то связано с указателями, которые я не понимаю.Я не знаю, в чем разница создания строки (или любой NSObject), например:

NSString place = ...;
or
NSString *place = ...;

Спасибо за помощь !!

Ответы [ 3 ]

14 голосов
/ 27 августа 2011

Вы никогда пишите NSString str.Период.Все объекты Obj-C на самом деле являются указателями C.

5 голосов
/ 27 августа 2011

NSString - это класс, и, как таковые, экземпляры класса, объявленные как NSString *str, всегда должны быть объявлены как указатели (поскольку экземпляры объектов могут быть доступны только через указатель на структуру объектов). Поэтому эта декларация является незаконной: NSString str

0 голосов
/ 27 августа 2011

Objective-C в некотором смысле больше похож на язык сценариев. Определения классов поддерживаются во время выполнения и могут быть изменены. В objc.h имеется интерфейс C для системы определения классов. Даже системные классы могут быть изменены, хотя это не очень хорошая идея. Из-за этого все объекты Objective C должны быть созданы во время выполнения и доступны через указатели. Другими словами, у компилятора нет способа узнать, как должен выглядеть объект во время компиляции. Вот почему «объект может не отвечать на селектор» - это предупреждение, а не ошибка, и в нем есть слово «может».

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