Objective-C @ интерфейс / уточнение указателя - PullRequest
1 голос
/ 25 июля 2009

Обучение, как всегда, шло довольно хорошо, пока я не понял, что понятия не имею, что означают различия между ними.

@class Player;
@class Map;

@interface View : NSView
{
    Player* player_;
    Map* currentMap_;
    NSMutableArray *worldArray;
    NSMutableArray *itemArray;
    float cellHeight_;
}

@end

Не берите в голову, оказывается, сторона, на которой находится звезда, не действуетвообще. Теперь я знаю, почему я так растерялся.

Ответы [ 2 ]

7 голосов
/ 25 июля 2009

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

float не имеет *, потому что это примитив C, а не объект Objective C.

2 голосов
/ 25 июля 2009

Это не имеет никакого значения для компилятора. Это полностью предпочтение разработчика.

Следующие сообщения одинаковы:

Player* player_;
Player *player_;
Player * player_;

Был один интересный комментарий, который я прочитал однажды о мыслительном процессе человека, который печатает:

Player* player_;

против того, что кто-то печатает:

Player *player_;

Я не могу найти его сейчас, так как такого рода вещи невозможно гуглить. Основная идея заключается в том, что разработчик, который вводит Player *, думает, что player_ является указателем на объект Player. Человек, который печатает его другим способом, думает, что объект Player содержится в разыменованной переменной player_. Небольшая разница, но в конечном итоге та же самая вещь.

Одна вещь, на которую вы могли бы обратить внимание, - это создание нескольких переменных-указателей в одной строке:

int *p, q;   // p is int*, q is int
int* p, q;   // not so obvious here, but p is int*, q is int
int *p, *q;  // it's a lot more obvious with the * next to the variable
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...