Возврат нескольких необъективных объектов / переменных C из метода - PullRequest
0 голосов
/ 17 октября 2011

Я знаю, что NSDictionary можно использовать для возврата нескольких вещей из метода, когда все объекты являются объектами типа Objective C, но есть ли способ упаковать объекты, которые не являются Objective C?

У меня естьметод, который мне нужен, чтобы вернуть int и IplImage.Не преобразовав IplImage в NSValue (чего я не знаю, как это сделать и чего я хочу избегать), могу ли я вернуть 2 элемента из метода?

Также обратите внимание, что этот метод определен в отдельном классе, из которогоон вызывается, поэтому я не думаю, что смогу использовать переменную класса для хранения int (или, может быть, смогу?).

Спасибо.

Ответы [ 3 ]

1 голос
/ 17 октября 2011

Если NSError** решение не работает для вас, вы можете создать помощника struct, который содержит int и IplImage:

typedef struct _Data {
    int num;
    IplImage image;
} Data;

, а затем передайте его.

1 голос
/ 17 октября 2011

этот подход будет работать для простых случаев, я уверен, что вы видели его:

- (BOOL)caclulate:(NSError**)outError;

возвращает BOOL и NSError.

Для возврата int:

- (BOOL)caclulate:(int*)outInt;

Используя этот подход, вы можете объявить свой метод следующим образом:

- (int)calculate:(IplImage*)outImage;

, а затем код вызывающей стороны примет следующий вид:

IplImage outImage;
int result = [object calculate:&outImage];
0 голосов
/ 17 октября 2011

Краткий ответ: нет.

Обычный способ - это то, что вы описали, используя NSDictionary. К сожалению, это означает работу с NSValue для нестандартных типов (NSNumber и т. Д.).

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

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