Функция, возвращающая массив в ObjC для iPhone - PullRequest
0 голосов
/ 18 февраля 2011

Hello Я пытаюсь заставить эту функцию возвращать массив! Что здесь не так?

-(char[10])print01:(int)int11{ //error: declared as method returning an array
    char arrayT[10];

    for(int i=0;i<8;i++)
    {
        if ((int1-n1)>=0){
            arrayT[i]='1';
            int1-=n1;
        }
        else 
            arrayT[i]= '0';
        n1=n1/2;
    }

    return arrayT[]; // incompatible types in return
}

и я хочу назвать это так:

char array1[10] = [self print01:(int)int1]; //error: invalid initializer

какие-либо предложения, пожалуйста?

Ответы [ 2 ]

5 голосов
/ 18 февраля 2011

Вы не можете вернуть массив в C или Objective-C. Лучшее, на что вы можете надеяться, это вернуть указатель на массив, но если вы собираетесь это сделать, убедитесь, что вы не возвращаете указатель на массив в стеке (как у вас).

0 голосов
/ 18 февраля 2011

Лучшим подходом является использование NSArray (конечно, я предполагаю, что приведенный выше код является упрощенным примером, но вы всегда можете использовать NSNumber).В качестве альтернативы, вы можете вернуть указатель на массив, который является распространенным в C, поскольку C (и цель c по расширению) не может вернуть массив.К сожалению, это потребовало бы выделения памяти для массива и использования ручного управления памятью (malloc / free), которое в зависимости от жизненного цикла массива может быть где угодно от неприятности до ужасного.Я рекомендую взять параметр char * dest и вставить символы в массив как dest [i]

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