Новое в Objective-C -> Быстрый вопрос (ы) - PullRequest
0 голосов
/ 02 августа 2010

Итак, я пытаюсь совершить ужасный прыжок из VB.NET в цель-C.

Мой единственный опыт использования фигурных скобок - это маленький ActionScript 3 ... Мне трудно понять, как использовать символ *.

Вопрос 1:

У учебника, который я использую, эти две строки расположены рядом друг с другом ..

IBOutlet UIPickerView *pickerView;
NSArray* myArray;

Насколько я понимаю, * обозначает по существу ссылочный тип. Почему оно предшествует имени переменной в первой строке, но имени класса во второй?

Второй вопрос о объявлениях классов:

@implementation {
 Why is some code here
}

and other code here?
@end

Ответы [ 3 ]

6 голосов
/ 02 августа 2010
  1. Это большая банка червей - ответ в том, что синтаксис там эквивалентен, вы можете делать все, что захотите.Некоторые люди довольно религиозны в отношении того или другого, но компилятору все равно.

  2. Я думаю, вы имеете в виду @interface, верно?Код внутри фигурных скобок - это просто список переменных экземпляра.За скобками вы помещаете объявления методов.

Если вы хотите изучать Objective-C, вероятно, стоит сначала пойти и выучить C.Затем, когда вы поймете синтаксис и такие понятия C, как указатели и предварительные объявления, вы сможете довольно быстро использовать Objective-C.

2 голосов
/ 02 августа 2010

Куда вы добавляете * в объявлении переменной, не имеет значения, поскольку после типа.

Это на самом деле неправильно:

@implementation x {
}

@end

Вы можете сделать это только с @interface:

@interface x {
  //ivars here...
}

//method declarations here...

@end
0 голосов
/ 03 августа 2010

Пробел вокруг "*" не имеет значения, поэтому для компилятора две строки, которые вы указали, идентичны - два указателя на объекты (ссылочные типы, как вы их называли).

Обычно для объектов обычно требуется " ", где примитивные типы (и такие вещи, как struct) этого не делают - так, например, CGRect не будет использовать"".

Однако, просто чтобы немного сбить вас с толку, есть общая ссылкадля объекта "id", который не нуждается (и не может иметь) * - вы бы объявили переменную, например, как:

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