2015-08-01 5 views
-2

Я пытаюсь получить данные из веб-службы и добавить его в NSMutableArray, после этого я хочу, чтобы вернуть этот массив из экстерном функция с .....Как вернуть массив строк в Objective C

, например, :

@implementation SampleClass 

    -(NSMutableArray*) createArray: 
    { 
    NSMutableArray *array=[NSMutableArray new]; 
    // 
    //add value in array 
    // 

    return array; 

    } 


    @end 


    extern 'C' 
    { 

    //how can i 

    NSArray* returnArray()// this method should return string array 
    { 
    SampleClass *sc=[[SampleClass alloc]init]; 
    NSMUtableArray* a=[NSMutableArray new]; 
    a=[sc createArray]; 
    return a 
    } 
} 

@end 

ответ

0

Почему вы должны использовать extern "C" поскольку Objective-C является подмножеством C? Вы уже можете использовать код C без проблем.

Для вашего вопроса это зависит от времени жизни массива. Если массив сохраняется, то этого достаточно:

char *cString = [[array objectAtIndex:i] UTF8String]; 

В противном случае вам нужно выделить новый char* для каждой строки, например, с помощью strdup:

char *cString = strdup([[array objectAtIndex:i] UTF8String]); 

вид, что последние потребует вы освобождаете память, когда вам это больше нужно free(cString). Если вам необходимо вернуть массив C, то вы будете создавать его до и установить значения соответственно, например,

char** cArray = calloc([array count], sizeof(char*)); 
+0

Спасибо за ваш ответ, я пытаюсь создать плагин для Unity3D для этого мне нужно ехЬегп «C» ... используя этот extern «C», я получаю доступ к этому в C# -коде ... поэтому мне нужен метод в extern «C», который возвращает массив строк ... – VPS