Как передать (по значению) структуру в Objective-C? - PullRequest
3 голосов
/ 02 мая 2010

Этот сводит меня с ума! У меня есть структура:

typedef struct{
  int a;
}myStruct;

Тогда у меня есть:

myStruct tempStruct;

Я пытаюсь передать структуру в метод класса, реализация которого:

- (void) myFunc:(struct myStruct)oneOfMyStructs{};

Я называю метод так:

[myClass myFunc:(struct myStruct)tempStruct];

Компилятор жалуется на «Запрошено преобразование в нескалярный тип». Все, что я хочу сделать, это передать структуру в метод класса, но синтаксис меня немного смущает. Я новичок в Objective-C. Пожалуйста, дайте мне знать, если вы видите, где я иду не так. Я также не мог передать по ссылке, так что, если бы вы могли помочь мне с этим, это было бы здорово!

Спасибо!

1 Ответ

3 голосов
/ 02 мая 2010

Так как typedef -едан до myStruct, вам не нужно (не обязательно) включать ключевое слово struct в сигнатуру функции или вызов:

typedef struct tag_myStruct
{
    int a;
}
myStruct;

- (void) myFunc:(myStruct) x {}

[myClass myFunc:tmpStruct];

должно быть достаточно. (Сравните все те функции Какао, которые принимают такие вещи, как NSRect с.)

...