Иногда я вижу маленькую букву перед объектом (?) О чем это?Пример ниже - PullRequest
0 голосов
/ 02 октября 2010
- (id)initWithFrame:(CGRect)frame viewController:(LevelViewController *)aController;

Для чего нужен маленький?Когда я вижу маленькое k, я предполагаю, что оно постоянное.

Ответы [ 3 ]

2 голосов
/ 02 октября 2010

Это всего лишь соглашение. Обычно мы называем наши переменные экземпляра понятным / логическим способом:

@interface Foo : NSObject {
  Bar * bar;
  Baz * baz;
}
@end

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

- (id) initWithBar:(Bar *)bar baz:(Baz *)baz;

Проблема в том, что при реализации этого метода мы сталкиваемся с конфликтами имен:

- (id) initWithBar:(Bar *)bar baz:(Baz *)baz {
  if (self = [super init]) {
    bar = [bar retain];
    baz = [baz retain];
  }
  return self;
}

Проблема здесь в том, что параметр "bar" скрывает переменную экземпляра с именем "bar", что приводит к конфликту и нежелательному поведению. Чтобы исправить это, мы привязываем статью (при необходимости) к параметру, чтобы указать, что это может быть любой бар или любой Баз:

- (id) initWithBar:(Bar *)aBar baz:(Baz *)aBaz {
  if (self = [super init]) {
    bar = [aBar retain];
    baz = [aBaz retain];
  }
  return self;
}
1 голос
/ 02 октября 2010

По соглашению переменные (и аргументы методов также являются переменными) начинаются со строчной буквы.В этом случае аргумент «aController» также может быть назван просто «controller» или «fluffyBunny».Автор выбрал «aController», скорее всего, по эстетическим причинам.

Соглашение Apple о запуске постоянной переменной, например kCFStreamStatusAtEnd, также является соглашением.Вместо этого они могли выбрать любой другой символ или вообще ни одного (например, константы для Какао начинаются с NS без символа нижнего регистра, как в NSStreamStatusAtEnd).

Тогда есть так называемый Венгерская нотация .Это соглашение, которое кодирует метаданные в переменную, например, ее тип.Его использование довольно противоречиво, есть много людей, которые любят и используют это, и другие, которые ненавидят это.См. Статью в Википедии для аргументов обеих сторон.

1 голос
/ 02 октября 2010

«а» означает, что это «аргумент», когда используется как венгерский. В качестве альтернативы его можно рассматривать как статью на английском языке, и поэтому он станет "anObject" или "someThings" (которые на венгерском языке будут aObject и aThings).

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

Относительно "k", да, это для константы.

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